【问题标题】:dividing sub-categories by parent category - WordPress按父类别划分子类别 - WordPress
【发布时间】:2021-02-23 14:44:41
【问题描述】:

我知道这个问题与之前的问题非常相似,但是提供的答案似乎都不适合我。

但我的问题是,如何按父类别划分子类别?

例如,如果我单击此网站上的气球(见第一张图片),它会将我带到一个新页面,其中子类别被划分,子类别的子类别在其下方组织(见图 2 和 3) .

我已经尝试了所有答案,但似乎都不起作用,而且我想保持相同的层次结构,无论深度如何(产品除外)我已经尝试了下面的代码,但似乎没有工作或显示任何变化

$taxonomies = get_terms( array(
    'taxonomy' => 'taxonomy_name',
    'hide_empty' => false
) );
 
if ( !empty($taxonomies) ) :
    $output = '<select>';
    foreach( $taxonomies as $category ) {
        if( $category->parent == 0 ) {
            $output.= '<optgroup label="'. esc_attr( $category->name ) .'">';
            foreach( $taxonomies as $subcategory ) {
                if($subcategory->parent == $category->term_id) {
                $output.= '<option value="'. esc_attr( $subcategory->term_id ) .'">
                    '. esc_html( $subcategory->name ) .'</option>';
                }
            }
            $output.='</optgroup>';
        }
    }
    $output.='</select>';
    echo $output;
endif;

我还尝试了以下似乎是我需要的,但它只是在我的网站上造成了严重错误

$term = get_queried_object();

$children = get_terms( $term->taxonomy, array(
    'parent'    => $term->term_id,
    'hide_empty' => false
) );

if ( $children ) { 
    foreach( $children as $subcat ) {
        echo '<a href="' . esc_url(get_term_link($subcat, $subcat->taxonomy)) . '">' . $subcat->name . ' - </a>';

        $grandchildren = get_terms( $subcat->taxonomy, array(
            'parent'    => $subcat->term_id,
            'hide_empty' => false
        ) );

        foreach ( $grandchildren as $grandchild ) {
            echo '<a href="' . esc_url(get_term_link($grandchild, $grandchild->taxonomy)) . '">' . $grandchild->name . ' - </a>';
        }
    }
}

我现在正在尝试一种不同的方法,这是我目前所拥有的,我也在使用代码 sn-ps 插件(我不知道这是否会有所不同)

//Return the child categories of a parent
$cat = get_category( get_query_var( 'cat' ) );
$cat_id = $cat->cat_ID;
$child_categories=get_categories(
    array( 'parent' => $cat_id )
);

//Print
foreach ( $child_categories as $child ) {
    // Here I'm showing as a list...
    echo '<li>'.$child ->cat_name.'</li>';
}

【问题讨论】:

标签: php wordpress woocommerce


【解决方案1】:

这段代码似乎实现了我想要的层次结构,但是它的显示方式仍然不正确,第一个值得注意的问题是我使用了不正确的钩子,下一个问题是我想显示父标题而不是父标题图像&我想显示子图像而不是标题,但代码在功能方面工作正常。

// Adding Child Category List to Main Category Display Grid

add_action('woocommerce_after_subcategory_title', 'woocommerce_subcats_from_parentcat_by_ID', 20);

function woocommerce_subcats_from_parentcat_by_ID($category) {
    $parent_category_ID = $category->term_id;
    $args = array(
        'hierarchical' => 1,
        'show_option_none' => '',
        'hide_empty' => 0, // Set to 0 to show empty categories and 1 to hide them
        'parent' => $parent_category_ID,
        'taxonomy' => 'product_cat'
    );
    $subcategories = get_categories($args);
    echo '<ul class="woo_subcategory_list">';
    foreach ($subcategories as $subcategory) {
        $link = get_term_link( $subcategory->slug, $subcategory->taxonomy );
        echo '<li><a href="'. $link .'">'.$subcategory->name.'</a></li>';
    }
    echo '</ul>';
}

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多