#php #wordpress #woocommerce
#php #wordpress #woocommerce
Вопрос:
Я пытаюсь удалить товары из результатов поиска, которые не относятся ни к одной категории.
Я пробовал это, но это не работает.
add_action('pre_get_posts', 'products_pre_get_posts');
function products_pre_get_posts($query) {
if ( ! is_admin() amp;amp; is_search() amp;amp; is_shop() ) {
$query->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( '' ),
'operator' => 'NOT IN'
)));
}
}
Ответ №1:
Это сработает для вас:
add_action( 'pre_get_posts', 'products_pre_get_posts' );
function products_pre_get_posts( $query ) {
if ( ! is_admin() amp;amp; $query->is_main_query() amp;amp; $query->is_search() ) {
$query->set( 'tax_query', array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => get_terms( array( 'taxonomy' => 'product_cat', 'fields' => 'ids' ) )
)
));
}
}
В этом случае функция get_terms()
вернет массив идентификаторов терминов, исключенных терминов, не присвоенных никаким записям, поскольку аргумент 'hide_empty'
по умолчанию true
.
Комментарии:
1. Спасибо за ваш ответ, теперь я получаю эту ошибку => object (WP_Error) # 333 (2) { [«ошибки»] => array (1) { [«invalid_taxonomy»]=> array (1) { [0] => string (16) «Недопустимая таксономия» } } [«error_data»] => array (0) { } }
2. И да, моя версия WordPress 4.6.1
3. Извините, я не могу воспроизвести ошибку, работаю со своей стороны.
4. Не работает с woocommerce 3
5. @Remi обновил ответ, работает с текущей установкой WordPress / Woocommerce.