将顶级父产品类别ID作为WooCommerce中的主体类获取

问题描述 投票:1回答:1

我需要获得Woocommerce中产品子类别的TOP级类别(而不仅仅是父类别)。

我有此代码来获取父类别ID:

if (is_subcategory()) {
  $term = get_queried_object();
  $parent_id = $term->parent;
}

这使$ parent_id作为主体类:

add_filter( 'body_class', 'parent_id_body_class' );
function parent_id_body_class( $classes ) {
    // add comprehensive text followed by parent id number to the $classes array
    $term = get_queried_object();
    $parent_id = $term->parent;
    $classes[] = 'parent-id-' . $parent_id;
    // return the $classes array
    return $classes;
}

这一切都很好,但这不是顶级父类别。只是父母我有3个级别的类别。我在php方面还不是很熟练...我已经搜索了很多,但是找不到如何解决这个问题。您的帮助将不胜感激。谢谢。

wordpress function woocommerce categories
1个回答
0
投票

下面将允许您在正文类上显示顶级父产品类别术语ID (带注释的代码)

add_filter( 'body_class', 'wc_product_cat_top_parent_id_body_class' );
function wc_product_cat_top_parent_id_body_class( $classes ) {
    // Only product category archives pages
    if ( is_product_category() ) {
        $taxonomy = 'product_cat'; // Woocommerce product category taxonomy

        // Get all parent terms Ids
        $parent_terms = get_ancestors( get_queried_object_id(), $taxonomy );

        // Only for product subcategories
        if ( sizeof( $parent_terms ) > 0 ) {
            // Loop through all parent terms Ids
            foreach ( $parent_terms as $parent_id ) {
                // Only the product category top level term Id
                if( get_term( $parent_id, $taxonomy )->parent == 0 ) {
                    $classes[] = 'top-parent-id-' . $parent_id;
                }
            }
        }
    }
    return $classes;
}

代码进入您的活动子主题(或活动主题)的functions.php文件中。经过测试和工作。

© www.soinside.com 2019 - 2024. All rights reserved.