首页 > 解决方案 > woocommerce 使用 woo 过滤器插件和隐藏的缺货产品显示不正确的结果数量

问题描述

我有一个 wordpress + woocommerce +_divi 主题 + woof 插件安装。有一个已知的错误 - 当我们有一些缺货产品,但我们使用 woocommerce 设置隐藏它们时,我们可以看到“显示 xxx 结果”消息,例如,在产品的类别页面上,其中 xxx 不正确 - 它是所有产品的数量,有库存和无库存 - 而仅显示库存产品。当我们不使用 woof 插件时,我们可以在主题 functions.php 中使用此代码修复计数问题:

add_action('woocommerce_product_query', 'fix_the_count');

function fix_the_count($query) {
$meta_query = $q->get( 'meta_query' );
$meta_query[] = array(
'key' => '_stock_status',
'compare' => '=',
'value' => 'instock'
);
$q->set( 'meta_query', $meta_query );
}

但是当我们使用 woof 过滤插件时,通过将此插件的短代码 [woof_products] 插入到 divi builder 类别布局中,此代码不起作用。插件似乎没有使用标准的woocommerce_product_query行为,但它已更改版本,正如我们在插件代码的这一部分中看到的那样:

public function woocommerce_product_query($q) {
        $meta_query = $q->get('meta_query');
//for extensions
        if (!empty(WOOF_EXT::$includes['html_type_objects'])) {
            foreach (WOOF_EXT::$includes['html_type_objects'] as $obj) {
                if (method_exists($obj, 'assemble_query_params')) {
                    $q->set('meta_query', $obj->assemble_query_params($meta_query, $q));
                }
            }
        }
        return $q;
    }

如果我将 fix_the_count() 内容添加到此插件代码中,如下所示:

public function woocommerce_product_query($q) {
        //http://docs.woothemes.com/wc-apidocs/class-WC_Query.html
        //wp-content\plugins\woocommerce\includes\class-wc-query.php -> public function product_query( $q )
        $meta_query = $q->get('meta_query');
        $meta_query[] = array(
        'key' => '_stock_status',
        'compare' => '=',
        'value' => 'instock'
);
$q->set( 'meta_query', $meta_query );
        //for extensions
        if (!empty(WOOF_EXT::$includes['html_type_objects'])) {
            foreach (WOOF_EXT::$includes['html_type_objects'] as $obj) {
                if (method_exists($obj, 'assemble_query_params')) {
                    $q->set('meta_query', $obj->assemble_query_params($meta_query, $q));
                }
            }
        }
        return $q;
    }

什么都没有发生 - 计数仍然是错误的。有什么办法可以解决这个问题?

标签: wordpresswoocommerce

解决方案


推荐阅读