将缺货产品隐藏在Woocommerce的特定类别档案中



我需要编写一些代码,只在某些类别页面上隐藏缺货项目。

我试着让一个帖子前挂钩像这样:

add_action('pre_get_posts','filter_out_of_stock_discs');
function filter_out_of_stock_discs($query){
if($query->query_vars["post_type"] == "product"){
//...
}
}

我可以在调试器中看到,由于没有查询具有product-post类型的查询var,所以它永远不会被命中。

在调用循环之前,我还尝试将其添加到我的分类产品页面:

global $wp_query;
$wp_query->set("meta_query", array(
array(
'key' => '_stock_status',
'value' => 'instock'
),
array(
'key' => '_backorders',
'value' => 'no'
),
)
);

但这并不能改变任何事情。

如何拦截查询以修改它是否检查库存状态?

Wooccommerce有自己的过滤器。这对我有效:

add_action( 'woocommerce_product_query','filter_out_of_stock_prod', 10, 2);
function filter_out_of_stock_prod($q, $wc_query){
$meta_query = $q->get( 'meta_query' );
$meta_query[] = array(
'key' => '_stock_status',
'value' => 'instock',
'compare' => '='
);
$q->set( 'meta_query', $meta_query );
}

最新更新