wordpress - 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;
}
什么都没有发生 - 计数仍然是错误的。有什么办法可以解决这个问题?
解决方案
推荐阅读
- javascript - 使用 d3.geoPath(projection) 似乎没有将正确的属性“d”添加到“路径”中
- database - 使用New-AzSqlDatabaseExport在powershell中导出azure数据库并不总是返回OperationStatusLink,导致异常
- c# - 如何对文本文件中的数据进行排序并显示
- spring-data - Spring数据r2dbc和group by
- c# - C# Charting:水平 Y 轴标题对齐
- amazon-web-services - AWS EventBridge 作为 Lambda 目标
- multithreading - 创建一个将阻塞的函数,直到它被超过 n/2 个线程调用(伪代码)
- javascript - 如何使用 JohMun/vue-tags-input 发布标签值
- superpower - SuperPower 解析器运行时异常:值不能为空。参数名称:解析器
- html - 如何换行长单词并保持正常单词不换行