Как получить значения вариантов продукта WooCommerce - PullRequest
0 голосов
/ 31 октября 2018

Я хочу иметь возможность перечислить значения варианта вариации. Например, у меня есть фонарь, который входит в 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) [" sizes "] => array (3) {[" length "] => string (4)" 11.8 "[" width "] => string ( 4) "11.8" ["height"] => string (4) "11.8"} ["sizes_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"] => строка (445) "http://website/wp-content/uploads/2018/10/6712R-1-600x600.jpg 600 Вт, http://website/wp-content/uploads/2018/10/6712R-1-150x150.jpg 150 Вт, http://website/wp-content/uploads/2018/10/6712R-1-300x300.jpg 300 Вт, http://website/wp-content/uploads/2018/10/6712R-1-768x768.jpg 768 Вт, http://website/wp-content/uploads/2018/10/6712R-1-1024x1024.jpg 1024 Вт, http://website/wp-content/uploads/2018/10/6712R-1-100x100.jpg 100 Вт "[" размеры "] => строка (31)" (максимальная ширина: 600 пикселей) 100 Вт, 600 пикселей "[" 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_indivually"] => string (2) "no" ["is_virtual"] => bool (false) ["max_qty"] => int (17) ["min_qty"] => int (1) ["price_html"] => string (145) "

"[" sku "] => string (5)" 6712R "["ification_description"] => string (0) "" ["ification_id "] => int (1462) [" var_is_active "] => bool (true) ["var_is_visible"] => bool (true) ["weight"] => string (0) "" ["weight_html"] => string (3) "N / A"} [1] => массив (24) {["attribute"] => array (1) {["attribute_pa_size"] => string (4) "14in"} ["Availability_html"] => string (51) "

Это только для одного продукта, есть один для каждого варианта, но это дает вам представление о том, как это работает. Я также готов попробовать другой метод, чтобы получить те же результаты, поэтому, если вы знаете один, дайте мне знать. Спасибо

1 Ответ

0 голосов
/ 31 октября 2018

Вам необходимо использовать 2-й цикл 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>';
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...