个性化阅读
专注于IT技术分析

Woocommerce:显示父类别(任意)而不是当前类别

创建自定义主题后, 我必须更改WooCommerce在显示产品类别时的行为方式。

默认行为是显示用户选择类别的子类别和/或产品。例如, 当请求https:// wordpress_site / product-category / category_a / sub-category_a / sub-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, 但是我不知道如何以正确的方式实现这一目标。请你帮助我好吗?

为了回答问题”为什么?”, 目的是在页面顶部添加一个带有子类别的选择框, 并动态过滤产品列表客户端, 以仅显示所选类别的产品, 或者仅显示所选类别的产品, 否则显示所有产品。选择”所有类别”选项。


#1


因此, 基本上, 如果一个产品类别有一个父类别, 则要检索该父类别的所有产品。

为此, 你需要按照以下方式编辑查询:

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' );

请注意, 我尚未测试此功能, 因此你可能需要适应你的需求。

希望有帮助!

赞(0)
未经允许不得转载:srcmini » Woocommerce:显示父类别(任意)而不是当前类别

评论 抢沙发

评论前必须登录!