Intereting Posts

Отображение результатов поиска 1 Компания или 2 компании

Мне интересно, можно ли это сделать, если я хочу что-то вроде этого. Посмотрите на мой код, пожалуйста.

Здесь идет код:

<?php _e('Search result for','NCC'); ?> <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('"<span>'); echo $key; _e('</span>"'); _e('<span class="resultsFound">( We found '); echo $count . ' '; _e('companies )</span>'); wp_reset_query(); ?> 

Результатом этого кода будет:

 ( We found 1 companies ) 

Можно ли заставить его работать, как результат, говоря «компания», когда есть 0 или 1 найденный результат и говорят «компании», когда есть более 2 или более результатов, найденных при использовании окна поиска wp?

Пример:

 (1 company found) or (2 companies found) 

Любое предложение? Возможно ли это с помощью WordPress?

Solutions Collecting From Web of "Отображение результатов поиска 1 Компания или 2 компании"

$found_posts содержит количество сообщений, найденных определенным запросом. Вы можете использовать эту логику для отображения своих ссылок

Пример:

 if ( $allsearch->found_posts <= 1 ) { //Dispaly company } else { // Disply companies } 

Просто примечание о грамматике, должно быть 0 companies 1 company и x amount of companies после этого

РЕДАКТИРОВАТЬ

Из редактирования, который я сделал по вашему вопросу, у меня есть следующее: Честно говоря, ваш код немного беспорядок, но ничего, что нельзя исправить, хотя :-). Позволяет быстро сбежать

  • showposts амортизируется в пользу posts_per_page

  • wp_specialchars был обесценен с версии 2.0. Вы должны использовать esc_html . Но, честно говоря, я не знаю, подходит ли это здесь.

  • Вы не должны локализовать теги HTML, только буквальный текст должен быть локализован. Исключить теги HTML из строк для локализации и использовать заполнители

  • wp_reset_query() следует использовать с query_posts который вы никогда не должны использовать. Вы должны использовать wp_reset_postdata() с WP_Query . В этом случае это необязательно, поскольку вы не настраиваете постданные или не изменяете глобальную переменную $post

  • Я не очень уверен, действительно ли вам нужно локализовать значение $key

Как уже было сказано в другом ответе, вы можете использовать _n() для локализации строк с единым и множественным значением. Как я уже сказал, правильная грамматика и использование

  • 0 companies 1 company и x amount of companies

Ваша проблема в этой строке

 _e('<span class="resultsFound">( We found '); echo $count . ' '; _e('companies )</span>'); 

Мы можем переписать его на что-то вроде этого

 $text = '<span class="resultsFound">'; $text .= sprintf( _n( 'We found %d company', 'We found %d companies', $count ), $count ); $text .= '</span>'; echo $text; 

Если вам действительно нужно отобразить 0 company , вы можете использовать

 $text = '<span class="resultsFound">'; if ( $allsearch->found_posts <= 1 ) { $text .= sprintf(__( 'We found %d company' ), $count ); } else { $text .= sprintf(__( 'We found %d companies' ), $count ); } $text .= '</span>'; echo $text; 

или

 $text = '<span class="resultsFound">'; if ( $allsearch->post_count <= 1 ) { $text .= sprintf(__( 'We found %d company' ), $count ); } else { $text .= sprintf(__( 'We found %d companies' ), $count ); } $text .= '</span>'; echo $text; 

Вы можете использовать функцию _n вместо _e .

Прочтите это: _n