Исключить пользовательский тип записи из поиска по значению произвольного поля?
13 февр. 2013 г., 21:18:22
Просмотры: 2.03K
Голосов: 0
Мне не удалось найти информацию о том, как это сделать или возможно ли это вообще.
Я хочу, чтобы в результатах поиска не отображались записи пользовательского типа "resources", у которых значение поля "resource_usertype" (ключ) не равно "Public", "Students" или "Alumni" (значения).
Или, возможно, лучше сказать, что я хочу отображать только те результаты поиска, где значения поля "resource_usertype" равны "Public", "Students" или "Alumni".

Ray Gulick
526
Все ответы на вопрос
2
1
Вам необходимо реализовать хук для фильтра pre_get_posts
, в котором можно задать нужные параметры. Обратите внимание, что изменять нужно только поисковый запрос, поэтому следует проверять, возвращает ли метод is_search()
значение true. Хук должен выглядеть следующим образом:
add_filter( 'pre_get_posts', 'wpse8170_pre_get_posts' );
function wpse8170_pre_get_posts( WP_Query $query ) {
if ( $query->is_search() ) {
$query->set( 'post_type', array( 'resources' ) );
$query->set( 'meta_query', array(
array(
'key' => 'resource_usertype',
'value' => array('Public', 'Students', 'Alumni'),
'compare' => 'IN',
)
) );
}
return $query;
}

Eugene Manuilov
11.4K
13 февр. 2013 г. 22:02:13
1
Это вполне возможно!
$args = array(
'post_type' => 'resources',
'meta_query' => array(
array(
'key' => 'resource_usertype', // Ключ произвольного поля
'value' => array('Public', 'Students', 'Alumni'), // Значения: Публика, Студенты, Выпускники
'compare' => 'IN', // Оператор сравнения (вхождение в массив)
)
)
);
$query = new WP_Query($args); // Создаем новый запрос WP_Query

vancoder
7.91K
13 февр. 2013 г. 21:57:20
Похожие вопросы