显然,WooCommerce忽视了meta_query
参数,所以这就是为什么您得到所有订单。
您可以使用此代码使meta_query
参数用于WooCommerce(订单)查询:
add_filter( \'woocommerce_get_wp_query_args\', function( $wp_query_args, $query_vars ){
if ( isset( $query_vars[\'meta_query\'] ) ) {
$meta_query = isset( $wp_query_args[\'meta_query\'] ) ? $wp_query_args[\'meta_query\'] : [];
$wp_query_args[\'meta_query\'] = array_merge( $meta_query, $query_vars[\'meta_query\'] );
}
return $wp_query_args;
}, 10, 2 );
但正如我在评论中指出的,要查询所有订单
var_rate
元数据不是空的,请设置
compare
到
!=
:
\'meta_query\' => array(
array(
\'key\' => \'var_rate\',
\'compare\' => \'!=\',
\'value\' => \'\',
),
),
在使用单个元查询进行查询的情况下,只需使用
meta_key
参数以及
meta_compare
和
meta_value
, 无需使用
meta_query
参数:
\'meta_key\' => \'var_rate\',
\'meta_compare\' => \'!=\',
\'meta_value\' => \'\',
这样,您就不必使用上面“启用”的代码
meta_query
参数
更新我想我没有真正注意到问题的标题。。我想我应该补充这些:
在问题的标题中,您可以看到“元数据的作用not exist为此\'compare\' => \'NOT EXISTS\'
或\'meta_compare\' => \'NOT EXISTS\'
是你需要的。
但在问题的正文中,您说了“,其中一些额外的元数据等于not empty如果var_rate
为空或不存在do not return that record为此\'compare\' => \'!=\'
或\'meta_compare\' => \'!=\'
是你需要的。
因为当compare
或meta_compare
设置为!=
, 以及value
或meta_value
设置为\'\'
(默认值,如果未明确指定),则表示“查找数据库中存在元数据且值不为空(不为空)的记录\'\'
还是不NULL
)“。
我希望这能有所帮助。:)