Делаю плагин фильтры для товаров.
Для начала просто сделал хук для проверки в 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
что не так?