用缩略图显示WooCommerce PRODUCT_CAT子术语

时间:2015-06-17 作者:steamfunk

我想知道是否有人能帮我一把。我想显示我的woo commerce商店类别的子类别以及我在仪表板中为它们设置的缩略图。我设立了两个家长类别“男性”“女性”。在这两位家长的指导下,我对每一位孩子都有一些分类。据我所知,woo commerce类别是通过自定义分类法制定的。所以我没有使用get_the_category() 相反,我使用get_terms(). 我使用了下面的代码,缩略图和perma链接适用于每个术语,但此代码仍显示父术语。有人能告诉我我做错了什么吗?我真的很感谢你的帮助!

<?php

    $taxonomyName = "product_cat";
    $prod_categories = get_terms($taxonomyName, array(
            \'orderby\'=> \'name\',
            \'order\' => \'ASC\',
            \'hide_empty\' => 1
    ));  

    foreach( $prod_categories as $prod_cat ) :
            $terms = get_terms($taxonomyName, array(\'parent\' => $prod_cat->term_id, \'orderby\' => \'slug\', \'hide_empty\' => false));
            $cat_thumb_id = get_woocommerce_term_meta( $prod_cat->term_id, \'thumbnail_id\', true );
            $cat_thumb_url = wp_get_attachment_thumb_url( $cat_thumb_id );
            $term_link = get_term_link( $prod_cat, \'product_cat\' );
    ?>

    <li><a href="<?php echo $term_link; ?>"><img src="<?php echo $cat_thumb_url; ?>" alt="<?php echo $prod_cat->name; ?>" /></a></li>
    <?php endforeach; wp_reset_query(); ?>

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

我不完全确定你是否真的需要get_terms() 两次这看起来很不得力,太过分了。我不知道您是否需要这个来订购,但仍然有更好的方法可以做到这一点,而不会对db造成太大影响。另一种选择是打一个电话给get_terms() 然后使用usort() 按家长对术语进行排序。但这超出了你的问题范围。

有几种方法可以排除父术语

只需使用exclude 中的参数get_terms() 排除父类别。如果您的父母的id为1和2,那么您可以添加\'exclude\' => [1, 2], 你的论点get_terms()· (注意,新的短数组语法仅在PHP 5.4中可用。对于旧版本,请使用\'exclude\' => array( 1, 2 ),

您也可以在父对象上循环。如果您的父母是顶级术语,那么他们的父母id将是0, 因此,您只需在foreach

if ( $prod_cat->parent == 0 )
    continue;
或者,您可以使用它们各自的ID跳过它们

if ( $prod_cat->term_id == 1 || $prod_cat->term_id == 2 )
    continue;

结束

相关推荐

get_terms custom order

我正在使用get_terms 函数按字母顺序排列自定义分类法的所有术语。然而,我的客户现在要求将其中一个术语放在最后(因此不按字母顺序排列)。有人对如何实现这一目标的最佳方式有什么建议吗?