В Woocommerce перестал работать поиск товара в админке

На днях на одном из сайтов на WooCommerce клиент пожаловался, что перестал работать поиск товаров в админке. Он объяснил что не работает поиск когда вводишь исходное слово в поле «Поиск по товарам», а остальные фильтры по умолчанию.

Что такое вызвало, не понятно. До этого были обновлены многие плагины, я проверил на старой версии сайта (да, есть такое, когда я сохраняю для себя), там все работало.

Посмотрел строку url которую создает запрос, вот что там:

&post_status=all&post_type=product&action=-1&product_visibility=0&seo_filter&readability_filter&product_type&stock_status&product_cat&paged=1&action2=-1

Удалив параметр &product_cat из запроса, поиск работал нормально, т.е. то что нужно искал.

Не стал сильно заморачиваться с поиском плагина виновника этой ситуации, а просто добавил код в functions.php

add_action( 'pre_get_posts', 'products_pre_get_posts' );
function products_pre_get_posts( $query ) {

  if(is_admin()){
     $query->set( 'tax_query', array(
        array(
            'taxonomy'  => 'product_cat',
            'field'     => 'term_id',
            'terms'     => get_terms( array( 'taxonomy' => 'product_cat', 'fields' => 'ids' ) )
        )
    ));
  }
}

Всё! Поиск работает как нужно и с параметром product_cat.

Если кто сталкивался с такой проблемой и нашел «виновника» — отпишитесь в комментариях, что за плагин мешает нормальному поиску товаров в админке.

P.S. После внесения выше указанного кода у клиента перестали отображаться группы полей на странице плагина ACF Pro (Advanced Custom Fields PRO)

Выглядело это так:

ACF не отображаются группы полей
Т.е. на картинке видно, что «Все(7)» есть какие-то группы, но они не отображаются в списке.

Решается проблема легко, я изменил немного код:

add_action( 'pre_get_posts', 'products_pre_get_posts' );
function products_pre_get_posts( $query ) {
  if(is_admin()){
	global $pagenow;
	if (( $pagenow == 'edit.php' ) && ($_GET['post_type'] == 'product')) {
		$query->set( 'tax_query', array(
			array(
				'taxonomy'  => 'product_cat',
				'field'     => 'term_id',
				'terms'     => get_terms( array( 'taxonomy' => 'product_cat', 'fields' => 'ids' ) )
			)
		));
	}
  }
}

Вот с таким кодом поиск в админке работает ACF плагин отображает свои данные, по сути я заставил код работать только на странице «Товары» плагина WooCommerce.

4 комментария к “В Woocommerce перестал работать поиск товара в админке”

  1. Подскажите, а как вернуть пагинацию?
    Поиск починил кодом выше, а пагинации нет.

    1. Александр

      А до починки кода пагинация была?

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх