简体   繁体   English

如何获取 WooCommerce 产品变体值

[英]How to get WooCommerce product variation values

I want to be able to list the the variation option values.我希望能够列出变化选项值。 For example I have a lantern that comes in 12in, 14in and 16in.例如,我有一个 12 英寸、14 英寸和 16 英寸的灯笼。 I want to be able to get these values.我希望能够获得这些值。 I have been trying to use the foreach loop to get these values but I need a little help.我一直在尝试使用 foreach 循环来获取这些值,但我需要一些帮助。 here's my code;这是我的代码;

function test_func(){
    global $woocommerce, $product, $post;
    // test if product is variable
    if( $product->is_type( 'variable' ) ){
        $available_variations = $product->get_available_variations();
        // var_dump($available_variations);

        foreach( $available_variations as $key => $value ){ 
            var_dump( $value['attributes'] ) ;
        }
    }
}

This is what is output:这是输出:

array(1) { ["attribute_pa_size"]=> string(4) "12in" } array(1) { ["attribute_pa_size"]=> string(4) "14in" } array(1) { ["attribute_pa_size"]=> string(4) "16in" }

As you can see the values that I want are there, but I don't know how to get them to echo them.如您所见,我想要的值在那里,但我不知道如何让它们响应它们。

Here's what I get if I var_dump() $available_variations;这是我得到的结果,如果我 var_dump() $available_variations;

" ["backorders_allowed"]=> bool(false) ["dimensions"]=> array(3) { ["length"]=> string(4) "11.8" ["width"]=> string(4) "11.8" ["height"]=> string(4) "11.8" } ["dimensions_html"]=> string(21) "11.8 x 11.8 x 11.8 in" ["display_price"]=> float(3.2) ["display_regular_price"]=> float(3.2) ["image"]=> array(18) { ["title"]=> string(11) "6712R-1.jpg" ["caption"]=> string(0) "" ["url"]=> string(59) " http://website/wp-content/uploads/2018/10/6712R-1.jpg " ["alt"]=> string(0) "" ["src"]=> string(67) " http://website/wp-content/uploads/2018/10/6712R-1-600x600.jpg " ["srcset"]=> string(445) " http://website/wp-content/uploads/2018/10/6712R-1-600x600.jpg 600w, http://website/wp-content/uploads/2018/10/6712R-1-150x150.jpg 150w, http://website/wp-content/uploads/2018/10/6712R-1-300x300.jpg 300w, http://website/wp-content/uploads/2018/10/6712R-1-768x768.jpg 768w,http://website/wp-content/uploads/2018/10/6712R-1-1024x1024.jpg 1024w, http://website/wp-content/uploads/2018/10/6712R-1-100x100.jpg 100w" " ["backorders_allowed"]=> bool(false) ["dimensions"]=> array(3) { ["length"]=> string(4) "11.8" ["width"]=> string(4) " 11.8" ["height"]=> string(4) "11.8" } ["dimensions_html"]=> string(21) "11.8 x 11.8 x 11.8 in" ["display_price"]=> float(3.2) ["display_regular_price "]=> float(3.2) ["image"]=> array(18) { ["title"]=> string(11) "6712R-1.jpg" ["caption"]=> string(0) " " ["url"]=> string(59) " http://website/wp-content/uploads/2018/10/6712R-1.jpg " ["alt"]=> string(0) "" [" src"]=> string(67) " http://website/wp-content/uploads/2018/10/6712R-1-600x600.jpg " ["srcset"]=> string(445) " http://网站/wp-content/uploads/2018/10/6712R-1-600x600.jpg 600w, http://website/wp-content/uploads/2018/10/6712R-1-150x150.jpg 150w, http://网站/wp-content/uploads/2018/10/6712R-1-300x300.jpg 300w, http://website/wp-content/uploads/2018/10/6712R-1-768x768.jpg 768w,http://网站/wp-content/uploads/2018/10/6712R-1-1024x1024.jpg 1024whttp://website/wp-content/uploads/2018/10/6712R-1-100x100.jpg 100w" ["sizes"]=> string(31) "(max-width: 600px) 100vw, 600px" ["full_src"]=> string(59) " http://website/wp-content/uploads/2018/10/6712R-1.jpg " ["full_src_w"]=> int(2000) ["full_src_h"]=> int(2000) ["gallery_thumbnail_src"]=> string(67) " http://website/wp-content/uploads/2018/10/6712R-1-100x100.jpg " ["gallery_thumbnail_src_w"]=> int(100) ["gallery_thumbnail_src_h"]=> int(100) ["thumb_src"]=> string(67) " http://website/wp-content/uploads/2018/10/6712R-1-300x300.jpg " ["thumb_src_w"]=> int(300) ["thumb_src_h"]=> int(300) ["src_w"]=> int(600) ["src_h"]=> int(600) } ["image_id"]=> string(3) "164" ["is_downloadable"]=> bool(false) ["is_in_stock"]=> bool(true) ["is_purchasable"]=> bool(true) ["is_sold_individually"]=> string(2) "no" ["is_virtual"]=> bool(false) ["max_qty"]=> int(17) ["min_qty"]=> int(1) ["price_html"]=> string(145) " ["sizes"]=> string(31) "(max-width: 600px) 100vw, 600px" ["full_src"]=> string(59) " http://website/wp-content/uploads/2018/10 /6712R-1.jpg " ["full_src_w"]=> int(2000) ["full_src_h"]=> int(2000) ["gallery_thumbnail_src"]=> string(67) " http://website/wp-content /uploads/2018/10/6712R-1-100x100.jpg " ["gallery_thumbnail_src_w"]=> int(100) ["gallery_thumbnail_src_h"]=> int(100) ["thumb_src"]=> http string(67) " ://website/wp-content/uploads/2018/10/6712R-1-300x300.jpg " ["thumb_src_w"]=> int(300) ["thumb_src_h"]=> int(300) ["src_w"] => int(600) ["src_h"]=> int(600) } ["image_id"]=> string(3) "164" ["is_downloadable"]=> bool(false) ["is_in_stock"]=> bool(true) ["is_purchasable"]=> bool(true) ["is_sold_individually"]=> string(2) "no" ["is_virtual"]=> bool(false) ["max_qty"]=> int(17) ) ["min_qty"]=> int(1) ["price_html"]=> string(145) "

" ["sku"]=> string(5) "6712R" ["variation_description"]=> string(0) "" ["variation_id"]=> int(1462) ["variation_is_active"]=> bool(true) ["variation_is_visible"]=> bool(true) ["weight"]=> string(0) "" ["weight_html"]=> string(3) "N/A" } [1]=> array(24) { ["attributes"]=> array(1) { ["attribute_pa_size"]=> string(4) "14in" } ["availability_html"]=> string(51) " " ["sku"]=> string(5) "6712R" ["variation_description"]=> string(0) "" ["variation_id"]=> int(1462) ["variation_is_active"]=> bool(true) ["variation_is_visible"]=> bool(true) ["weight"]=> string(0) "" ["weight_html"]=> string(3) "N/A" } [1]=> array(24) { ["attributes"]=> array(1) { ["attribute_pa_size"]=> string(4) "14in" } ["availability_html"]=> string(51) "

This is just for one product, there is one for each variation, but this gives you the idea of how it works.这仅适用于一种产品,每种变体都有一个,但这可以让您了解它的工作原理。 I'm also open to trying another method to get the same results so if you know of one let me know.我也愿意尝试另一种方法来获得相同的结果,所以如果你知道一个方法,请告诉我。 Thanks谢谢

You need to use a 2nd foreach loop for the product attributes:您需要为产品属性使用第二个 foreach 循环:

function test_func(){
    global $woocommerce, $product, $post;
    // test if product is variable
    if( $product->is_type( 'variable' ) ){
        // Loop through available product variation data
        foreach ( $product->get_available_variations() as $key => $variation ) {
            // Loop through the product attributes for this variation
            foreach ($variation['attributes'] as $attribute => $term_slug ) {
                // Get the taxonomy slug
                $taxonmomy = str_replace( 'attribute_', '', $attribute );

                // Get the attribute label name
                $attr_label_name = wc_attribute_label( $taxonmomy );

                // Display attribute labe name
                $term_name = get_term_by( 'slug', $term_slug, $taxonmomy )->name;

                // Testing output
                echo '<p>' . $attr_label_name . ': ' . $term_name . '</p>';
            }
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM