Intereting Posts
проанализировать идентификатор видео YouTube с помощью preg_match Не удается удалить index.php с сайта на основе CI CakePHP: вызов функции-члена setFlash () для объекта без объекта Выделение подстроки PHP. Получить строку перед первой '/' или всей строкой Как получить изображение DPI в PHP Magento: добавление пошлин / налогов к котировке во время обзора Поле «Reply-to» в почте Laravel не работает PHP – добавление прозрачного PNG в GIF динамически API Facebook работает отлично для / фида, но не для / фотографий Как отправить динамическое содержимое электронной почты без задания cron htaccess для изменения index.php? ms = пользователь / пользователь Laravel Artisan CLI безопасно останавливает работников очереди демонов Перенаправить Symfony2 LogoutSuccessHandler в исходную цель выхода из системы Обрабатывать запросы $ _GET с чистыми URL-адресами Laravel 5 – Очистить кеш на сервере общедоступного хостинга

Как можно разделить результаты поиска на вкладки «Типы сообщений» на Frontend?

У меня есть установка WordPress. У меня на моем сайте около 3 пользовательских типов сообщений. Когда я выполняю поиск, все результаты типа сообщения отображаются на лицевой стороне на 1 странице. Некоторые типы сообщений полностью отличаются от других контентных мудрей, поэтому результаты выглядят немного забавными.

Есть ли способ разделить результаты на вкладки в соответствии с типом сообщения? Я хочу оставить результаты по умолчанию так, как они сейчас (все результаты), но затем имеют вкладки вправо, отфильтровывая разные результаты в соответствии с типом публикации, к которому они принадлежат.

Я создал jpeg здесь, чтобы помочь точно объяснить, что я пытаюсь сделать.

благодаря

http://f.cl.ly/items/110S2K1A0T3m290Y0C14/Filter_post_Types.jpg

введите описание изображения здесь

Обновление 1: просто захотелось добавить немного дополнительной информации о кодовой части

Я планировал использовать короткие коды в качестве вкладок

[tabs] [tab]All Search Results[/tab] [tab]Post Type 1 Results[/tab] [tab]Post Type 1 Results[/tab] [tab]Post Type 1 Results[/tab] [tab] 

или в шаблоне PHP. Я также могу это сделать

 <?php echo do_shortcode('[tabs style="boxed" id="searchTabs"] [tab title="Post Type 1"]Post Type 1 Results[/tab] [tab title="Post Type 2"]Post Type 2 Results[/tab] [tab title="Post Type 3"]Post Type 3 Results[/tab] [/tabs]'); ?> 

Я думаю, что здесь есть что-то, что может мне помочь, но не уверен, как его реализовать. Http://codex.wordpress.org/Template_Tags/get_posts

Обновление 2: Другие советы, которые я получил на другом форуме, – это попробовать код, подобный этому, но я не могу правильно его реализовать в моем шаблоне поиска php, который находится здесь http://pastie.org/4248751

Предлагаемый код

 <?php $the_slug = 'my_slug'; $args=array( 'name' => $the_slug, 'post_type' => 'custom_post_Type_1', 'post_status' => 'publish', 'numberposts' => 1 ); $my_posts = get_posts($args); $the_slug2 = 'my_slug2'; $args2=array( 'name' => $the_slug2, 'post_type' => 'custom_post_Type_2', 'post_status' => 'publish', 'numberposts' => 1 ); $my_posts2 = get_posts($args2); echo do_shortcode('[tabs style="boxed" id="searchTabs"] [tab title="Post Type 1"] <?php //This code is for first post type foreach( $myposts as $post ) : setup_postdata($post); ?> <li><a>"><?php the_title(); ?></a></li> <?php endforeach; ?> [/tab] [tab title="Post Type 2"] <?php //This code is for second post type foreach( $myposts2 as $post ) : setup_postdata($post); ?> <li><a>"><?php the_title(); ?></a></li> <?php endforeach; ?> [/tab] [/tabs]'); ?> 

Related of "Как можно разделить результаты поиска на вкладки «Типы сообщений» на Frontend?"

EDIT: Извините – поймите сейчас.

Пользовательские разные циклы на каждой вкладке.

Первая вкладка:

 <?php global $post; rewind_posts(); $query = new WP_Query(array( 'posts_per_page' => -1, )); while ($query->have_posts()) : $query->the_post(); ?> <!-- YOUR OUTPUT CODE HERE --> <?php endwhile; wp_reset_postdata(); ?> 

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

 <?php global $post; rewind_posts(); $query = new WP_Query(array( 'posts_per_page' => -1, 'post_type' => 'post_type_name', )); while ($query->have_posts()) : $query->the_post(); ?> <!-- YOUR OUTPUT CODE HERE --> <?php endwhile; wp_reset_postdata(); ?> 

Я бы использовал jQuery для достижения этого, не уверен, согласятся ли все, но я попробовал, и это сработало для меня.

Когда WordPress отображает результаты поиска, у каждого есть имя класса, отражающее тип сообщения, например

 <article class="page type-page ....">blah blah blah</article> 

На вкладке «Все результаты» вы можете использовать jQuery с чем-то вроде:

 $('.search-results .type-page').clone('.tab1'); 

Сначала запустите указанную функцию, чтобы копия всех результатов была клонирована в первую вкладку. Что касается других вкладок, вы можете начать вырезать и вставлять в них соответствующие разделы, используя:

 $('.search-results .type-page').appendTo('.tab2'); 

Поскольку вы используете shortcode для вкладок, убедитесь, что вы проверили сгенерированный код вкладок и захватили правильное имя класса для каждой вкладки для замены ('.tab1') и / или ('.tab2') выше. Вы можете запустить функцию на $ document.ready, и она должна работать. Дайте мне знать, если я не слишком ясен или просто неправильно.

Надеюсь, это поможет!

Это сработало для меня. Это код для двух типов сообщений на одной вкладке, у меня есть еще две вкладки, изменяющие содержимое в строке 'post_type' => array ('post', 'aktualnosci')

  <?php $args = array( 'orderby' => 'rand', 's' => $s, 'post_type' => array ( 'post', 'aktualnosci') ); query_posts($args); if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class="col-xs-12 col-sm-6 col-md-4"> <a href="<?php the_permalink() ?>"> <?php the_post_thumbnail('post-thumbnail', array( 'class' => "img-responsive"));?> <div class="caption"> <span class="ilabel"> <?php if ( get_post_type() == 'post' ) { echo 'Oferta'; } else { echo 'Aktualności'; } ; ?> </span> <h1><?php the_title(); ?></h1> <p> <?php //first sentence excerpt only $strings = preg_split('/(\.|!|\?)\s/', strip_tags($post->post_content), 2, PREG_SPLIT_DELIM_CAPTURE); echo apply_filters('the_content', $strings[0] . $strings[1]);?> </p> </div> </a> </div> <?php