在单个页面上按其父 slug 或 ID 显示 Woocommerce 子类别

Show Woocommerce subcategories on single page by their parents slug or ID

我正在尝试在 categories/subcategories 的帮助下将发布者、主题和作者添加到单个产品。这是经过数小时 coding/and 复制后的样子(WooCommerce tbh 非常新鲜)

这就是我得到的,但它显示了所有子类别,而不仅仅是与产品相关的子类别,这是我正在使用的代码

    function get_product_subcategories_list( $category_slug ){
    $terms_html = array();
    $taxonomy = 'product_cat';
    // Get the product category (parent) WP_Term object
    $parent = get_term_by( 'slug', $category_slug, $taxonomy );
    // Get an array of the subcategories IDs (children IDs)
    $children_ids = get_term_children( $parent->term_id, $taxonomy );

    // Loop through each children IDs
    foreach($children_ids as $children_id){
        $term = get_term( $children_id, $taxonomy ); // WP_Term object
        $term_link = get_term_link( $term, $taxonomy ); // The term link
        if ( is_wp_error( $term_link ) ) $term_link = '';
        // Set in an array the html formated subcategory name/link
        $terms_html[] = '<a href="' . esc_url( $term_link ) . '" rel="tag" class="' . $term->slug . '">' . $term->name . '</a>';
    }
    return '<span class="subcategories-' . $category_slug . '">' . implode( ', ', $terms_html ) . '</span>';
}
    add_action('woocommerce_single_product_summary','monolith_cat_scan', 31);
        function monolith_cat_scan() {
        echo '<p>Topic : ';
            echo get_product_subcategories_list( 'topics' );
        echo '</p>';
        echo '<p>Publisher : ';
              echo get_product_subcategories_list( 'publishers' );
        echo '</p>';
        echo '<p>Author: ';
              echo get_product_subcategories_list( 'authors' );
        echo '</p>';
        }

但我无法让整个事情像我想要的那样工作并获得单一产品的子类别,在这个例子中只有灵性,SOUNDS TRUE INC(只有 Publishers 中的子猫)和 Allan Watts 应该在那里。

非常感谢您的帮助!

我得到了一个工作代码(我知道它看起来并不漂亮,但它是我能做的最好的,它确实有效。

add_action('woocommerce_single_product_summary','monolith_cat_scan', 31);

function monolith_cat_scan() {

global $post;

$cats = get_the_terms( $post->ID, 'product_cat' );

if ( ! empty( $cats ) ) {

        foreach ( $cats as $term ) {

        if( $term->parent == 30 ) { 
      echo '<p>Topic : <a href="' . site_url() . '/product-category/' . $term->slug . '">' . $term->name . '</a>';
   }

        }

}

}
add_action('woocommerce_single_product_summary','monolith_cat_scan2', 32);

function monolith_cat_scan2() {

global $post;

$cats = get_the_terms( $post->ID, 'product_cat' );

if ( ! empty( $cats ) ) {

        foreach ( $cats as $term ) {

        if( $term->parent == 31 ) { 
      echo '<p>Author : <a href="' . site_url() . '/product-category/' . $term->slug . '">' . $term->name . '</a>';
   }

        }

}

}

add_action('woocommerce_single_product_summary','monolith_cat_scan3', 33);

function monolith_cat_scan3() {

global $post;

$cats = get_the_terms( $post->ID, 'product_cat' );

if ( ! empty( $cats ) ) {

        foreach ( $cats as $term ) {

   // If parent cat ID = 116 echo subcat name...
        if( $term->parent == 32 ) { 
      echo '<p>Publisher : <a href="' . site_url() . '/product-category/' . $term->slug . '">' . $term->name . '</a>';
   }

        }

}

}