仅获取Woocommerce产品标签的发布条款?

时间:2017-10-10 19:01:21

标签: php wordpress woocommerce tags product

我的功能会在每个产品上输出所有使用过的Woocommerce产品标签。

如何只排序/输出每个产品从后端选择的标签?

这是我的代码:

add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_product_loop_tags', 5 );
add_action( 'woocommerce_product_thumbnails', 'woocommerce_product_loop_tags',  5 );

function woocommerce_product_loop_tags() {
    global $post, $product;
        if ( is_array (get_terms( 'product_tag' ))) {
           $tags = get_terms( 'product_tag' , 'orderby=id' );
           echo '<span class="badge-cloud">';
           foreach($tags as $tag) {
              echo '<span rel="tag" class="fl-badge '.$tag->slug.'"><p>'.$tag->name.'</p></span>';
           } 
           echo '</span>';
        } 
}

1 个答案:

答案 0 :(得分:1)

正确的方法是使用wp_get_post_terms(),您可以在其中设置给定分类的帖子ID,以获取此特定帖子ID的条款。所以你的代码应该是:

add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_product_loop_tags', 5 );
add_action( 'woocommerce_product_thumbnails', 'woocommerce_product_loop_tags',  5 );
function woocommerce_product_loop_tags() {
    global $post;

    $taxonomy = 'product_tag';
    $args = 'orderby=id';
    $product_tags = wp_get_post_terms( $post->ID, $taxonomy, $args );

    if ( count($product_tags) > 0 ){
        echo '<span class="badge-cloud">';
        foreach( $product_tags as $term )
            echo '<span rel="tag" class="fl-badge '.$term->slug.'"><p>'.$term->name.'</p></span>';
        echo '</span>';
    }
}

代码进入活动子主题(活动主题或任何插件文件)的function.php文件中。

经过测试和工作。