Wordpress WooCommerce显示单个产品的嵌套产品类别

时间:2014-09-23 15:16:00

标签: php wordpress woocommerce taxonomy

我有一个销售汽车零件的Wordpress WooCommerce网站。对于每个零件(产品),我创建了可以分配给零件的唯一产品类别。所以例如大灯(部件)可以来自3门1999蓝色阿尔法罗密欧156 1.1汽油手册。

在单个产品页面上,我想显示仅与此部件关联的产品类别的嵌套列表。因此,当我标记一个部件时,我将有一个嵌套视图,如下图所示。 enter image description here

但是,我在第二张图片下方的当前代码会显示所有与其相关的部分的产品类别,包括此部分。从下面的第二张图中可以看出,我有很多其他部件分配给其他汽车制造商,他们都显示为这部分。我只希望这部分显示与此部分相关的产品类别。因此,在Make下它应该只显示Alfa Romeo - 不是所有其他产品类别中包含其中的部分,无论它们是否在此部分中被标记。 enter image description here

有人可以帮忙吗?

当前代码

<?php 
    $woocCategoryTerms = get_terms('product_cat', array(
        'order'        => 'ASC',
        'hide_empty'   => true,  // (boolean) 
        'parent'       => 0,     // (integer) Get direct children of this term (only terms whose explicit parent is this value). If 0 is passed, only top-level terms are returned. Default is an empty string.
        'hierarchical' => true,  // (boolean) Whether to include terms that have non-empty descendants (even if 'hide_empty' is set to true).
        ));    

    foreach($woocCategoryTerms as $wooCategoryTerm) : 
?>
        <ul>
            <li>
                <a href="<?php echo get_term_link( $wooCategoryTerm -> slug, $wooCategoryTerm -> taxonomy ); ?>">
                    <?php 
                        echo $wooCategoryTerm -> name; 
                    ?>
                </a>
                <ul class="wsubcategs">
                    <?php
                        $wooSubArgs = array(
                            'hierarchical' => true,
                            'hide_empty' => true,
                            'parent' => $wooCategoryTerm -> term_id,
                            'taxonomy' => 'product_cat'
                        );

                        $wooSubCategories = get_categories($wooSubArgs);

                        foreach ($wooSubCategories as $wooSubCategory):
                    ?>
                            <li>
                                <a href="<?php echo get_term_link( $wooSubCategory -> slug, $wooSubCategory -> taxonomy );?>">
                                    <?php 
                                        echo $wooSubCategory -> name;
                                    ?>
                                </a>
                            </li>
                            <?php
                        endforeach;
                            ?>  
                </ul>
            </li>
        </ul>
        <?php 
    endforeach; 
        ?>

1 个答案:

答案 0 :(得分:4)

get_terms返回给定的特定分类的所有条款,而不是帖子。你有几个选择,但我喜欢使用wp_list_categories的灵活性。它不仅适用于类别构建,也适用于自定义分类法

以下是codex的一个例子

<?php
$taxonomy = 'category'; //change to your taxonomy name

// get the term IDs assigned to post.
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
// separator between links
$separator = ', ';

if ( !empty( $post_terms ) && !is_wp_error( $post_terms ) ) {

    $term_ids = implode( ',' , $post_terms );
$terms = wp_list_categories( 'title_li=&style=none&echo=0&taxonomy=' . $taxonomy . '&include=' . $term_ids );
$terms = rtrim( trim(  str_replace( '<br />',  $separator, $terms ) ), $separator );

// display post categories
echo  $terms;
}
?>

您还可以使用get_the_terms