显示Woocommerce变量产品的产品属性“颜色”计数

时间:2018-03-25 23:47:53

标签: php wordpress woocommerce shortcode custom-taxonomy

我有一些简单的产品和几个带有尺寸和颜色变体的可变产品。对于我想在主页或其他地方展示的各种颜色的产品,所述产品有多少种颜色可供选择。因此,在主页上的产品图像下,它将根据该产品的颜色变量下有多少变体显示为“Colors:5”或类似的东西。

我已经搜索过,并没有发现在WooCommerce中如何做到这一点。

(使用WooCommerce插件在Wordpress中使用Divi主题。)

1 个答案:

答案 0 :(得分:0)

这可以通过构建自定义短代码来完成,该短代码将输出每个产品属性名称以及用于变量产品ID的变体的术语计数:

if( ! function_exists('product_attributes_count') ) {
    function product_attributes_count( $atts, $content = null ) {
        // Attributes
        $atts = shortcode_atts( array(
            'id' => '',
        ), $atts, 'attr_count' );

        $product = wc_get_product($atts['id']);

        // Only for variable products
        if( ! $product->is_type('variable')) return '';

        $results = array();
        // Loop through product attributes for variations for this variable product
        foreach( $product->get_variation_attributes() as $taxonomy => $term_slugs ){
            $attr_name = get_taxonomy( $taxonomy )->labels->singular_name; // name
            $count = count($term_slugs); // terms count
            // Formatting
            $results[] = '<span class="'.$taxonomy.'">' . $attr_name . ': ' . $count . '</span>';
        }
        // Output a coma separated string
        return explode(', ', $results)
    }
    add_shortcode("attr_count", "product_attributes_count");
}

代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。

  

使用短代码 (参数 id ,即变量产品ID)

     
      
  • 在Wordpress页面或帖子编辑器上,只需使用:[attr_count id='40']
  •   
  • 在PHP代码上使用:echo do_shortcode("[attr_count id='40']");
  •   
  • 在PHP内部使用:<?php echo do_shortcode("[attr_count id='40']"); ?>
  •   

如果您只需要定位颜色,请在IF循环中插入此foreach语句:

if( $taxonomy == 'pa_color' ){
    // the code
}