获取Woocommerce变体属性

时间:2017-08-16 13:46:00

标签: wordpress woocommerce hook-woocommerce

我正在尝试在自定义产品页面上获取变量产品的变体。我有两个属性,一个用于尺寸作为选择,另一个用于颜色作为色板。我无法显示需要显示的属性的问题,当我使用以下代码时,它返回大小或颜色的文本名称,而不是大小或颜色样本的选择下拉列表。请帮忙吗?!

echo implode(', ', wc_get_product_terms( $product_id, 'pa_colors' )); 

1 个答案:

答案 0 :(得分:6)

这是一个简短的代码来解决你的问题,我让你整个代码,你只能使用你需要的。

首先检查是否存在get_product函数,并检查产品类型,以创建具有id的正确产品对象(在我的情况下为$idProduct)。

它适用于woocommerce 3.x,我不会在woocommerce上测试它< 3.X。

if( function_exists('get_product') ) {
        $product = get_product( $idProduct );
        if ( $product->is_type( 'variable' ) ) {

            $product = new WC_Product_Variable( $idProduct );

            $available_variations = $product->get_available_variations(); //get all child variations
            $variation_variations = $product- >get_variation_attributes(); // get all attributes by variations

            // taxonomy           => terms
            // pa_attribute-color => array('blue', 'red', green)
            // Use ex: get_taxonomy('pa_attribute-color')->labels; to get the Name and not the slug to attributes, it can be the taxonomy
            // Use ex: get_term_by('name', 'pa_attribute-color', 'pa_attribute-color); to get the Name/label 

            $result = array( $available_variations , $attributes);  // only to see the result you can use var_dump, error_log, etc.
            //...
            //... 
        }elseif ( $product->is_type( 'bundle' ) && class_exists( 'WC_Product_Bundle' ) ) {
            $product = new WC_Product_Bundle( $idProduct );
        }else{
            $product = new WC_Product( $idProduct );
        }
    }

您也可以尝试:

$product->get_attribute( $key );
wc_attribute_label($key);

其中$key可以是 pa_color pa_size

我希望能帮助你。