创建自定义主题后,我必须更改WooCommerce在显示产品类别时的行为方式。
默认行为是显示用户选择类别的子类别和/或产品。例如,请求https://wordpress_site/product-category/category_a/sub-category_a/sub-sub-category_a/
我想要实现的是:
https://wordpress_site/product-category/category_a
),请保留默认行为https://wordpress_site/product-category/category_a/sub-category_a/sub-sub-category_a/
),则更改默认行为,而是显示父类别 sub-category_a 的产品,而不是当前类别的产品sub-sub-category_a 我认为,在调用archive-product.php模板时,我必须更改$ wp_query,但是我不知道如何以正确的方式实现这一目标。 你能帮我吗?
要回答“为什么?”问题,目的是在页面顶部添加一个带有子类别的选择框,并动态过滤产品列表客户端,以仅显示所选类别的产品或所有产品如果没有或没有选择“所有类别”选项。
答案 0 :(得分:0)
因此,基本上,如果一个产品类别有一个父类别,则要检索该父类别的所有产品。
要实现这一点,您需要按照以下方式编辑查询:
function prefix_get_parent_category_products( $query ){
// check we're in the right place and the category has a parent
if( $query->is_tax('product_cat') && !empty($query->query_vars['post_parent']) ){
// edit the tax query to include the parent category
$query->set('tax_query', array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $query->query_vars['post_parent'],
'include_children' => true
)
}
return;
}
add_action( 'pre_get_posts', 'prefix_get_parent_category_products' );
请注意,我尚未测试此功能,因此您可能需要适应您的需求。
希望有帮助!