2014-12-24 2 views
0

Я публикую этот вопрос после просмотра каждого сайта, который я нашел по этому вопросу. Ни один из ответов не дал мне подсказки, чтобы решить эту проблему, и результаты Google загрязнены совершенно разными темами.Wordpress: Показать категории которые искали:

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

Each one of the items is a category

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

Заранее спасибо.

ответ

0

Как вы не предоставили любой код, я пытался в мой путь .I догадку, это не лучший способ достичь его , но как сейчас, вы можете сделать таким образом.

Здесь я использовал PHP для достижения вашего желаемого результата.

Я использовал Двадцать четырнадцать тема search.php.

Вот моего код для search.php двадцать Четырнадцать темы и вы можете реализовать в вашем search file:

<?php 
    /** 
    * The template for displaying Search Results pages 
    * 
    * @package WordPress 
    * @subpackage Twenty_Fourteen 
    * @since Twenty Fourteen 1.0 
    */ 

    get_header(); ?> 

     <section id="primary" class="content-area"> 
      <div id="content" class="site-content" role="main"> 

       <?php if (have_posts()) : ?> 

       <header class="page-header"> 
        <h1 class="page-title"><?php printf(__('Search Results for: %s', 'twentyfourteen'), get_search_query()); ?></h1> 
       </header><!-- .page-header --> 

        <?php 

         // Start the Loop. 
         $post_id_array = array(); //Blank array to store all Post IDs 

         while (have_posts()) : the_post(); 

          array_push($post_id_array, $post->ID); //store ID to array 

          /* 
          * Include the post format-specific template for the content. If you want to 
          * use this in a child theme, then include a file called called content-___.php 
          * (where ___ is the post format) and that will be used instead. 
          */ 
          get_template_part('content', get_post_format()); 

         endwhile; 
         // Previous/next post navigation. 
         twentyfourteen_paging_nav(); 

         $catarray = array(); //Blank array to store all categories 
         $k=1; 
         foreach($post_id_array as $my_post){ 
          $my_category = get_the_category($my_post); 

          foreach($my_category as $my_cat){ 
           array_push($catarray, $my_cat->cat_name); //Store category in array 
          } 

          $something = array_count_values($catarray); //Count total number of element in category array 

          foreach(array_unique($catarray) as $some){ 
           if($k == sizeof($my_category)): //Condition to print all thing if only it is last element of an array. 
            echo $some."(". $something[$some].")<br>"; 
           endif; 
          } 
          $k++; 
         } 
        else : 
         // If no content, include the "No posts found" template. 
         get_template_part('content', 'none'); 

        endif; 
       ?> 

      </div><!-- #content --> 
     </section><!-- #primary --> 

    <?php 
    get_sidebar('content'); 
    get_sidebar(); 
    get_footer(); 

Здесь, в приведенном выше коде, я сделал:

Шаг-1 : Возьмите один пустой массив для хранения Идентификатор сообщений, которые задаются поисковым запросом.

Шаг 2: Нажмите все идентификаторы , чтобы созданный пустого массива с array_push функции PHP. ПРИМЕЧАНИЕ: Убедитесь, что вы положили его в while loop, чтобы получить все ID.

После два шага, теперь у вас есть массив всех почтовых идентификаторов.

Шаг 3: Возьмите другой пустой массив для хранения связанных названия категории поста.

Шаг 4:. Возьмем одну переменную и дать его значение к 1, который является полезным в конце (я принял $k = 1).

Шаг 5: сделать одну foreach петлю Post идентификаторов. И получить Категория названия сообщений с функцией wordpress get_the_category. It will fetch category based on post ID.

Шаг 6: Теперь пришло время использованияпустой массив, что мы создали для категории name.So только loop через категории имени и магазин имя категории в к массива ,

Шаг 7: Граф всего имен в категории массива с array_count_values функции PHP и назначить переменную к нему (я использовал $something)..

После step-7 у нас есть массив категории. Примечание: Здесь в этом массиве может быть дублирование категории name.To удалить дублирование Следуйте за следующим шагом.

Шаг 8: 'array_unique' Используйте функцию PHP, чтобы получить только уникальное значение из массива.

Шаг 9: Сделать loop имени категории.

Если вы echo прямо сейчас, it will print categories to total number of post times.

Так что теперь его подходящее время для использования переменных, которую мы сделали, прежде чем foreach петли столбика ID ($k=1).

Последнего шаг: Теперь сделайте одно условием для печати всех категорий в последнем сообщении.

Для этого я использовал if($k == sizeof($my_category)), что означает, что оно будет печататься только в том случае, если длина массива категории равна переменной K (Короче говоря, в конце).

Increas e Значение $k.

Надеюсь, это поможет вам. Спросите меня, если у вас есть сомнения.

+0

Привет, Рохил, большое вам спасибо за такой подробный ответ. Да, я не вводил никакого кода, потому что я был действительно невежественным, поэтому ставить что-то на мой вопрос было бы более запутанным, чем помогать. Я предпочел оставить вещи, начиная с стандартной петли, чтобы облегчить ситуацию. Я тестировал код, он еще не работал для меня, я удалил все, что у меня было, и вставил его так же, как вы его отправили, я просто заменил вызов шаблонов контента, потому что у меня их нет, но ничего не произошло. Все, что я получаю, это сообщение, полученное из цикла, но это все. Я все равно буду пытаться. – Jaypee

+0

Ok сделал это, проблема, с которой я сейчас сталкиваюсь, заключается в том, что я получаю много результатов поиска в категории «Лос-Анджелес», но все, что я получаю, это «Лос-Анджелес (1)» – Jaypee

+0

Привет, Рохил, у меня есть два сомнения если вы не возражаете. Что я должен изменить, чтобы поместить этот код за пределы цикла (сначала мои фильтры), и как мне сделать, чтобы включить ссылку на категории (я никогда не работал с array_push() или array_unique() раньше). – Jaypee

Смежные вопросы