Php WooCommerce:也在子类别页面上对类别/子类别进行排序

Php WooCommerce:也在子类别页面上对类别/子类别进行排序,php,wordpress,woocommerce,categories,product,Php,Wordpress,Woocommerce,Categories,Product,我发现了一个WooCommerce代码片段,它在分类页面上添加了排序功能,并且可以正常工作 但问题是排序子类别仅显示在父类别页面上,而不显示在子类别页面中 这是分类页面: 问题是排序在子类别页面上不起作用: 为了实现这一点,我需要在代码中修改什么 这是我的密码: function tutsplus_product_subcategories( $args = array()) { $parentid = get_queried_object_id(); $args = array(

我发现了一个WooCommerce代码片段,它在分类页面上添加了排序功能,并且可以正常工作

但问题是排序子类别仅显示在父类别页面上,而不显示在子类别页面中

这是分类页面:

问题是排序在子类别页面上不起作用:

为了实现这一点,我需要在代码中修改什么

这是我的密码:

function tutsplus_product_subcategories( $args = array()) {
$parentid = get_queried_object_id(); 
$args = array(
    'parent' => $parentid
);

$terms = get_terms( 'product_cat', $args );

if ( $terms) {

    echo '<ul class="wooc_sclist">';

        foreach ( $terms as $term ) {

            echo '<li class="category">';                 


                echo '<h2>';
                    echo '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '">';
                        echo $term->name;
                    echo '</a>';
                echo '</h2>';

            echo '</li>';


        }

        echo '</ul>';
    }
}
add_action( 'woocommerce_before_shop_loop', 'tutsplus_product_subcategories', 50 );

参考资料:

我找到了制作方法,因此我将与您分享:

        function sub_fillter(){
        $sub = wp_get_post_terms(get_the_ID(),'product_cat');
        if ( is_subcategory()){

            $cat = array_shift( $sub );
            $cat=get_term_top_most_parent($cat->term_id,'product_cat'); 
            tutsplus_product_subcategories($cat);
        }
    }
        add_action('woocommerce_before_shop_loop', 'sub_fillter', 50);

function is_subcategory (){
    $cat = get_query_var('cat');
    $category = get_category($cat);
    $category_gt_parent="";
    return ( $category_gt_parent == '0' ) ? false : true;
}

function tutsplus_product_subcategories( $cat) {
$parentid = $cat->term_id; 
$args = array(
    'parent' => $parentid
);
$terms = get_terms( 'product_cat', $args );

if ( $terms || is_subcategory()) {

    echo '<ul class="wooc_sclist">';

        foreach ( $terms as $term ) {

            echo '<li class="category">';                 

                echo '<h2>';
                    echo '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '">';
                        echo $term->name;
                    echo '</a>';
                echo '</h2>';

            echo '</li>';


        }

        echo '</ul>';
    }
}

抱歉耽搁了,这里有一些截图,这是我在我的父类别页面中进行的子类别排序:这是子类别页面,问题是排序没有显示在其中:查看更多调试结果会很有帮助。在子类别页面上,什么最终被存储到$terms中?这是你所期望的吗?if语句条件是否返回true以便尝试创建无序列表?我做了一些调试。问题是,当我使用get\u queryed\u object\u id时,我无法获取子类别id的父类别;它给了我当前的类别,我怎样才能让它给我子类别父类别的id?我刚刚编辑并添加了结论SIT没有改变子类别id。