【问题标题】:Hide out of stock products on specific category archives In Woocommerce [duplicate]在 Woocommerce 中隐藏特定类别档案中的缺货产品 [重复]
【发布时间】:2021-01-31 14:17:28
【问题描述】:

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

我试着像这样制作一个 pre posts 钩子:

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'
                ),
        )
);

但这不会改变任何事情。

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

【问题讨论】:

  • 你启用调试了吗?
  • 调试已启用,我已逐步完成代码

标签: wordpress woocommerce


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2019-09-27
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多