Intereting Posts
Получить идентификатор ребенка из дочернего пула, зная родительский идентификатор Как добавить атрибут «data-» к тегу изображения выходного файла галереи Разрешенный размер памяти 33554432 байт исчерпан (пытался выделить 9967617 байт) в … \ wp-includes \ functions.php Количество сообщений в блоге вызывает неразумное поведение последний Измененный и последний, последний вопрос! как создать таблицу стилей в редакторе тем? отображать липкий столбец вне цикла и исключать из цикла Укажите страницу в качестве родителя в архив CPT Пользовательское меню разбивается Меню wp nav: показать подменю ниже li item Помощь с большой базой данных MySQL на базе WordPress для совместного хостинга Контактная форма не отправляет электронную почту Можно ли проверить наличие коротких кодов на странице? CSS не загружается на мобильные устройства если плагин активен? проверить, включен ли плагин или нет?

Результаты поиска, отсортированные по типам сообщений

Я работаю над сайтом с несколькими типами сообщений – 4, если быть точным, – и я пытаюсь настроить страницу результатов поиска, чтобы иметь фильтр / сортировать результаты по типам сообщений.

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

Как исправить цикл так, чтобы он отображал только результаты поиска из этого типа сообщений? Я не хочу иметь разные формы поиска или сбросить запрос и в итоге потерять поисковый запрос. Вот некоторые из кода со страницы – http://pastebin.com/L9zEw1cn

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

Так или иначе, чтобы исправить второй цикл, чтобы он показывал только результаты поиска для этого типа сообщения?

Любая помощь будет принята с благодарностью. Благодарю.

Ответить

Solutions Collecting From Web of "Результаты поиска, отсортированные по типам сообщений"

Вы можете использовать фильтры posts_clauses Например:

 add_filter( 'posts_clauses', 'post_query_order', 20, 1 ); function post_query_order( $pieces ) { global $wpdb; $pieces['orderby'] = $wpdb->prefix.'posts.post_type ASC'; return $pieces; } 

Во втором цикле вы настраиваете аргументы для запроса постов, но вы их нигде не используете. Вы должны поместить query_posts( $args ) перед вторым циклом. Вы также можете использовать функцию get_posts или WP_Query .

EDIT: со страницы о функции query_posts на WordPress codex :

query_posts () – это самый простой, но не предпочтительный или наиболее эффективный способ изменить запрос по умолчанию, используемый WordPress для отображения сообщений. Используйте query_posts () для отображения разных сообщений, чем те, которые обычно отображаются на определенном URL-адресе.

Прямо сейчас, в вашем коде, вы дважды перебираете те же сообщения. Второй цикл точно такой же, как и первый.

Теперь, если вы поместите query_posts() с разными аргументами перед вторым циклом, например:

  $ args = array ('post_type' => 'videos', 's' => $ s);
 query_posts ($ args);
 if (has_posts ()):
 while (has_posts ()):
 the_post ();

 // Отображение сообщения

 ENDWHILE;  ENDIF;
 wp_reset_postdata ();  ?> 

Вы будете перебирать разные посты.