Отображение конкретных данных из выбранного варианта продукта в Woocommerce

#php #jquery #wordpress #woocommerce #product-variations

#php #jquery #wordpress #woocommerce #варианты продукта

Вопрос:

Я пытаюсь отобразить описание выбранного варианта продукта на моей отдельной странице продукта после кнопки «Добавить в корзину» на страницах с переменными продуктами.

Ниже приведен код, который я реализовал, но, похоже, он не работает:

 add_action( 'woocommerce_after_add_to_cart_form', 'description_below_add_cart', 11 );

function description_below_add_cart() {
    global $post;
    $terms = wp_get_post_terms( $post->ID, 'product_cat' );
    foreach ( $terms as $term ) $categories[] = $term->slug;

if ( in_array( 'cookware', $categories ) ) {
        global $product;
        $weight = $product->get_weight();
        $dimensions = wc_format_dimensions($product->get_dimensions(false));
            echo '<div class="short-description">' . $item['product']->get_description() .'</div>';
    }
}
  

Вот страница продукта с сайта.

Как я могу отобразить конкретные данные (описание варианта) из выбранного варианта продукта в Woocommerce после добавления в корзину кнопки для переменных продуктов?

Ответ №1:

Обновлено: ваш текущий код может быть немного упрощен в части категорий продуктов. Я добавил некоторый код для отображения описания варианта для выбранного варианта продукта на страницах переменных продуктов.

Вот способ отображения описания выбранных вариантов продукта (требуется некоторый jQuery):

 add_action( 'woocommerce_after_add_to_cart_form', 'description_below_add_cart', 11 );
function description_below_add_cart() {
    global $product;

    $terms_slugs  = wp_get_post_terms( $product->get_id(), 'product_cat', array('fields' => 'slugs') ); // Get the terms  slugs

    // Only for 'cookware' product category
    if ( in_array( 'cookware', $terms_slugs ) ) {
        $weight     = $product->get_weight();
        $weight     = ! empty($weight) ? wc_format_weight($weight) : '';
        
        $dimensions = $product->get_dimensions(false);
        $dimensions = ! empty($dimensions) ? wc_format_dimensions($dimensions) : '';

        // For variable products
        if ( $product->is_type('variable') ) {
            // Display the selected variation description
            echo '<div class="selected-variation-description"></div>';
            ?>
            <script type="text/javascript">
            jQuery( function($){
                // On select variation display variation description
                $('form.variations_form').on('show_variation', function( event, data ){
                    $('div.selected-variation-description').html(data.variation_description);
                    console.log(data.variation_description);
                });
                // On unselect variation remove variation description
                $('form.variations_form').on('hide_variation', function(){
                    $('div.selected-variation-description').html('');
                });
            });
            </script>
            <?php
        }
    }
}
  

Ввод кода functions.php файл активной дочерней темы (или активной темы). Протестировано и работает.

Комментарии:

1. При этом отображаются описания вариантов, но они отображаются все сразу в виде списка. В идеале описание варианта должно быть видно только тогда, когда каждый вариант «размер» выбирается из выпадающего списка вариантов. farmtofrank.wpengine.com/shop/cookware/housewares /…

2. Спасибо! Второе решение сработало. Получил мои очки 🙂