yous
@yous

Wordpress Hooks в плагине не работает $q->set()?

Делаю плагин фильтры для товаров.

Для начала просто сделал хук для проверки в function.php, всё нормально товары фильтрует.

if (!function_exists('woo_set_filter')) {
        add_action('woocommerce_product_query', 'woo_set_filter');
	function woo_set_filter($q){
	  if (!is_main_query() && !is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) {
			return;
		}

		$q->set('post__in', array(4733));
		return;
	}
}


Часть кода из плагина

class Woo_Product_Filter {

....

private function define_public_hooks() {

		$plugin_public = new Woo_Product_Filter_Public( $this->get_plugin_name(), $this->get_version() );

		$this->loader->add_action('woocommerce_product_query', $plugin_public, 'woo_set_filter', 10, 2);

	}


class Woo_Product_Filter_Public {

....
public function woo_set_filter($q){
if (!is_main_query() && !is_post_type_archive('product') && !is_tax(get_object_taxonomies('product'))) {
			return;
		}
$product_ids= $this->getProductIds();

$q->set('post__in', $product_ids); // не фильтрует

//$q->set('p', '1234'); // фильтрует, показывает записть ID 1234

return;
}


Вот в запросе все есть
}
    ["category__and"]=>
    array(0) {
    }
    ["post__in"]=>
    array(7) {
      [0]=>
      int(4581)
      [1]=>
      int(4443)
      [2]=>
      int(4444)
      [3]=>
      int(4445)
      [4]=>
      int(4446)
      [5]=>
      int(4447)
      [6]=>
      int(0)
    }
    ["post__not_in"]=>
    array(0) {
    }


в запрос post__in попал, а товары не фильтрует, выводит все как без post__in
что не так?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы