Woocommerce 元查询在 product_query 中不起作用
Woocommerce meta query not works in product_query
我想使用过滤器更改 woocommerce 产品页面循环中的产品
我正在尝试从 url wordpress.test/shop?filterbyAge=23
中筛选,现在我在函数文件中添加了代码但无法正常工作
我在产品中使用 ACF 插件创建了 felid
function updateQueryByAgeFilter( $q ){
if (isset($_GET['filterbyAge'])) {
$q->set('meta_query', [
[
'key' => 'book_age_group',
'value' => $_GET['filterbyAge'],
'compare' => '='
]
]);
}
}
add_action( 'woocommerce_product_query', 'updateQueryByAgeFilter' );
请帮我解决这个问题
似乎缺少合并查询
所以你得到:
// Change the shop query
function action_woocommerce_product_query( $q, $query ) {
// Returns true when on the product archive page (shop) & isset
if ( is_shop() && isset( $_GET['filterbyAge'] ) ) {
// Get any existing meta query
$meta_query = $q->get( 'meta_query' );
// Settings
$key = 'book_age_group';
$value = $_GET['filterbyAge'];
$meta_query[] = array(
'key' => $key,
'value' => $value,
'compare' => '='
);
// Set the new merged meta query
$q->set( 'meta_query', $meta_query );
}
}
add_action( 'woocommerce_product_query', 'action_woocommerce_product_query', 10, 2 );
我想使用过滤器更改 woocommerce 产品页面循环中的产品
我正在尝试从 url wordpress.test/shop?filterbyAge=23
中筛选,现在我在函数文件中添加了代码但无法正常工作
我在产品中使用 ACF 插件创建了 felid
function updateQueryByAgeFilter( $q ){
if (isset($_GET['filterbyAge'])) {
$q->set('meta_query', [
[
'key' => 'book_age_group',
'value' => $_GET['filterbyAge'],
'compare' => '='
]
]);
}
}
add_action( 'woocommerce_product_query', 'updateQueryByAgeFilter' );
请帮我解决这个问题
似乎缺少合并查询
所以你得到:
// Change the shop query
function action_woocommerce_product_query( $q, $query ) {
// Returns true when on the product archive page (shop) & isset
if ( is_shop() && isset( $_GET['filterbyAge'] ) ) {
// Get any existing meta query
$meta_query = $q->get( 'meta_query' );
// Settings
$key = 'book_age_group';
$value = $_GET['filterbyAge'];
$meta_query[] = array(
'key' => $key,
'value' => $value,
'compare' => '='
);
// Set the new merged meta query
$q->set( 'meta_query', $meta_query );
}
}
add_action( 'woocommerce_product_query', 'action_woocommerce_product_query', 10, 2 );