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

时间:2020-10-17 06:32:44

标签: wordpress woocommerce

我需要编写一些仅在某些类别页面上隐藏缺货商品的代码。

我试图像这样制作一个pre post钩子:

add_action('pre_get_posts','filter_out_of_stock_discs');

function filter_out_of_stock_discs($query){

    if($query->query_vars["post_type"] == "product"){
        //...
    }
}

我可以在调试器中看到这永远不会被击中,因为没有查询具有产品发布类型的查询变量。

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

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

但这并没有任何改变。

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

1 个答案:

答案 0 :(得分:0)

Woocommerce有自己的过滤器。这对我有用:

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 );
}