【问题标题】:How to get WooCommerce product variation values如何获取 WooCommerce 产品变体值
【发布时间】:2019-04-04 10:43:41
【问题描述】:

我希望能够列出变体选项值。例如,我有一个 12 英寸、14 英寸和 16 英寸的灯笼。我希望能够获得这些值。我一直在尝试使用 foreach 循环来获取这些值,但我需要一些帮助。这是我的代码;

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'] ) ;
        }
    }
}

这是输出:

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

您可以看到我想要的值在那里,但我不知道如何让它们回显它们。

如果我使用 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"]=> 字符串(59) "http://website/wp-content/uploads/2018/10/6712R-1.jpg" ["alt"]=> 字符串(0) "" ["src"]=> 字符串(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" ["sizes"]=> 31) "(最大宽度: 600px) 100vw, 600px" ["full_src"]=> 字符串(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) "

" ["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]=> 数组(24) { ["attributes"]=> array(1) { ["attribute_pa_size"]=> string(4) "14in" } ["availability_html"]=> string(51) "

这仅适用于一种产品,每个变体都有一个,但这让您了解它的工作原理。我也愿意尝试另一种方法来获得相同的结果,所以如果你知道一个让我知道。谢谢

【问题讨论】:

    标签: php arrays wordpress foreach woocommerce


    【解决方案1】:

    您需要为产品属性使用第二个 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>';
                }
            }
        }
    }
    

    【讨论】:

    • 我如何获得产品变体描述,我的意思是变体内部的描述,而不是主要产品描述
    • 对我来说,我需要的值只是$term_slug$term_name 为空。
    猜你喜欢
    • 2015-12-31
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多