Отобразить атрибуты продукта, которые не настроены для вариаций в вариациях продукта Woocommerce

У меня есть настраиваемая вкладка для каждого варианта продукта с некоторым статическим содержимым «описание варианта», которое я отображал на странице продукта, а также в> сводке продукта, когда я выбираю вариант (например, в эта ссылка).

И теперь мне нужно отобразить то же самое на странице магазина в цикле продуктов (см. Мой магазин страница).

ИЛИ даже лучше отображать определенные атрибуты. Я пробовал этот код:

add_action( 'woocommerce_after_shop_loop_item', 'custom_before_title' );
function custom_before_title() {
    global $product;

    echo '<h4><b>Seizoen:</b>' . $product->get_attribute('pa_seizoen') .'</h4>';
    echo '<h4><b>Maat:</b> ' . $product->get_attribute('pa_maat') .'</h4>';
    echo '<h4><b>Tijk:</b> ' . $product->get_attribute('pa_tijk-weving') .'</h4>';
    echo '<h4><b>Vulkracht:</b> ' . $product->get_attribute('pa_fullkraft[') .'</h4>';
    echo '<h4><b>Vulkracht:</b> ' . $product->get_attribute('pa_vulling') .'</h4>';
}

Но что бы я ни делал, я получаю тот же результат, он отображает только атрибуты продукта, которые находятся в вариациях продукта: первые два «сезон и размер».

Любая помощь приветствуется.


person Goran Lukic    schedule 12.05.2019    source источник


Ответы (1)


Вы используете плагин (или некоторые настройки), который отображается на странице вашего магазина (или страницах архива) для каждого варианта продукта индивидуально.

Поэтому вам нужно получить родительскую переменную product для других атрибутов продукта, которые не установлены для вариантов (и описания продукта или других необходимых связанных данных):

add_action( 'woocommerce_after_shop_loop_item', 'custom_before_title' );
function custom_before_title() {
    global $product;

    if( $seizoen = $product->get_attribute('pa_seizoen') ) {
        echo '<h4><strong>Seizoen:</strong>' . $seizoen . '</h4>';
    }
    if( $maat = $product->get_attribute('pa_maat') ) {
        echo '<h4><strong>Maat:</strong> ' . $maat . '</h4>';
    }

    $parent_id = $product->get_parent_id(); // Get the parent Variable Product ID
    // Below, all Parent variable product data
    if( $parent_id > 0 && $parent_product = wc_get_product($parent_id) ) {
        if( $tijk_weving = $parent_product->get_attribute('pa_tijk-weving') ) {
            echo '<h4><strong>Tijk:</strong> ' . $tijk_weving . '</h4>';
        }
        if( $fullkraft = $parent_product->get_attribute('pa_fullkraft') ) {
            echo '<h4><strong>Vulkracht:</strong> ' . $fullkraft . '</h4>';
        }
        if( $vulling = $parent_product->get_attribute('pa_vulling') ) {
            echo '<h4><strong>Vulling:</strong> ' . $vulling . '</h4>';
        }

        // Display the parent variable product description
        echo '<p><strong>Beschrijving:</strong> ' . $parent_product->get_description() . '</p>';

        // Display the parent variable product short description
        echo '<p><strong>Korte beschrijving:</strong> ' . $parent_product->get_short_description() . '</p>';
    }  

    // Display the product variation description
    // echo '<p><strong>Beschrijving:</strong> ' . $product->get_description() . '</p>';

    // Display the product variation weight
    // echo '<p><strong>Gewicht:</strong> ' . wc_format_weight( $product->get_weight() ) . '</p>';

    // Display the product variation dimensions
    // echo '<p><strong>Dimensies:</strong> ' . $product->get_dimensions() . '</p>';
}

Код находится в файле functions.php вашей активной дочерней темы (или активной темы). Теперь он должен работать.

person LoicTheAztec    schedule 12.05.2019
comment
эй, приятель, это работает на 99% идеально! :) БОЛЬШОЕ СПАСИБО!!! Единственное: pa_fullkraft не отображается на странице и, конечно, я не знаю почему :) - вы можете обновить страницу / shop - person Goran Lukic; 13.05.2019
comment
@GoranLukic Может быть, эта таксономия продукта pa_full-kraft (что-то немного другое). Вам нужно проверить, потому что никто не может сделать это за вас. - person LoicTheAztec; 13.05.2019