Модератор
Юрій
(@yube)
Универсальное — фильтр на хуке pre_get_posts. Подробности ищите в документации https://developer.wordpress.org/reference/hooks/pre_get_posts/ На форуме тоже есть примеры использования.
спасибо!
вот создал функцию
function book_queries($query){
if ( ! is_admin() && is_post_type_archive( 'book' ) && $query->is_tax() && $query->is_main_query() ) {
$query->set( 'meta_query', array(
array(
'key' => 'strana',
'compare' => '!=',
'value' => 'Germany',
)
) );
}
}
add_action( 'pre_get_posts', 'book_queries' );
срабатывает только на странице архива, на странице таксономии не хочет.. что тут не так?
-
Ответ изменён 2 года, 8 месяцев назад пользователем face2005.
-
Ответ изменён 2 года, 8 месяцев назад пользователем face2005.
Модератор
Юрій
(@yube)
срабатывает только на странице архива,
Видимо потому, что явно указано условие is_post_type_archive()
Determines whether the query is for an existing post type archive page.
на странице таксономии не хочет.
Что Вы называете страницей таксономии? Покажите пример.
вот на реальном проекте
function prodano_queries($query){
if ( ! is_admin() && is_post_type_archive( 'catalog' ) && $query->is_tax() && $query->is_main_query() ) {
$query->set( 'meta_query', array(
array(
'key' => 'prodano',
'compare' => '!=',
'value' => 'Продано',
)
) );
}
}
add_action( 'pre_get_posts', 'prodano_queries' );
https://crystalestate.com.ua/property-cat/apartment/
в таксономии Категории Недвижимости (property-cat) не срабатывает, может условие не такое? $query->is_tax() должно же во всех таксономиях срабатывать, или не правильно? нужно массивом передать все термы таксономии?
-
Ответ изменён 2 года, 8 месяцев назад пользователем face2005.
-
Ответ изменён 2 года, 8 месяцев назад пользователем face2005.
Модератор
Юрій
(@yube)
Боюсь, Вы малость путаете таксономии и термы.
/property-cat/apartment/ — страница терма
property-cat — таксономия
apartment — терм
для таксономии нет дефолтной страницы
Попробуйте уменьшить количество условий, например, так:
if ( ! is_admin() && $query->is_tax('property-cat') && $query->is_main_query() )