Как добавить описание вариации товара, в карточку товара Woocommerce?

Ссылка скопирована
1 ответ

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

Дополнительно:

Как добавить описание вариации товара, в карточку товара Woocommerce?

Использовать хук woocommerce_after_shop_loop_item и метод get_available_variations() у продукта, как то так:

function test() {   global $product;    if ($product->is_type('variable')) {     $current_variation_id = $product->get_variation_id();     $variations = $product->get_available_variations();      foreach ($variations as $variation) {       if ($current_variation_id === $variation['variation_id']) {         if (isset($variation['variation_description'])) {           echo $variation['variation_description'];         }         break;       }     }   } }  add_action('woocommerce_after_shop_loop_item', 'test');

function test() { global $product; if ($product->is_type('variable')) { $current_variation_id = $product->get_variation_id(); $variations = $product->get_available_variations(); foreach ($variations as $variation) { if ($current_variation_id === $variation['variation_id']) { if (isset($variation['variation_description'])) { echo $variation['variation_description']; } break; } } } } add_action('woocommerce_after_shop_loop_item', 'test');

  • Спасибо, описание действительно выводится, но еще проблема в том что выводится описание всех вариаций, а нужно как-то сделать чтобы выводилось только выбранной вариации, такая штука реализована на странице товара, но я не знаю где найти тот скрипт(
  • Vorder96, обновил ответ. Если не верно, то напишите заново (подробно), что именно Вы хотите.
  • Михаил Р., Вы гений, оно правильно но почему-то не выводится теперь описание, по инспектору вижу что оно есть, но на карточке товара теперь не выводится
  • Михаил Р.,

    Как добавить описание вариации товара, в карточку товара Woocommerce?

  • Vorder96, я так понял, что выводится все так, как и задумано? Если да, то жмите соответствующие кнопки под ответом и создавайте новый вопрос с проблемой не корректной верстки карточки товара.
  • Михаил Р., Хорошо, Спасибо
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

Описание вариации можно вывести в карточке товара WooCommerce, но важно понимать ограничение: в каталоге пользователь ещё не выбрал конкретную вариацию. Поэтому WordPress не знает, описание какой именно вариации показывать. На странице товара это работает иначе, потому что там есть форма выбора атрибутов.

Есть три нормальных варианта:

  • вывести краткие описания всех вариаций в карточке;
  • вывести описание первой доступной вариации;
  • сделать выбор вариации прямо в карточке и менять описание через JavaScript.

Самый простой вариант — показать описание первой доступной вариации в хуке карточки товара:

add_action('woocommerce_after_shop_loop_item_title', function () {
    global $product;
 
    if (!$product || !$product->is_type('variable')) {
        return;
    }
 
    $variations = $product->get_available_variations();
 
    if (empty($variations[0]['variation_description'])) {
        return;
    }
 
    echo '<div class="loop-variation-description">';
    echo wp_kses_post(wpautop($variations[0]['variation_description']));
    echo '</div>';
}, 25);

add_action('woocommerce_after_shop_loop_item_title', function () { global $product; if (!$product || !$product->is_type('variable')) { return; } $variations = $product->get_available_variations(); if (empty($variations[0]['variation_description'])) { return; } echo '<div class="loop-variation-description">'; echo wp_kses_post(wpautop($variations[0]['variation_description'])); echo '</div>'; }, 25);

Если нужно вывести все описания, лучше ограничить длину, иначе каталог быстро станет тяжёлым и неудобным:

foreach ($product->get_available_variations() as $variation) {
    if (!empty($variation['variation_description'])) {
        echo '<p class="loop-variation-description">' .
             esc_html(wp_trim_words(wp_strip_all_tags($variation['variation_description']), 18)) .
             '</p>';
    }
}

foreach ($product->get_available_variations() as $variation) { if (!empty($variation['variation_description'])) { echo '<p class="loop-variation-description">' . esc_html(wp_trim_words(wp_strip_all_tags($variation['variation_description']), 18)) . '</p>'; } }

Для больших магазинов аккуратнее с get_available_variations() в цикле каталога: если на странице 40 товаров и у каждого десятки вариаций, это может заметно замедлить вывод. В таком случае лучше заранее сохранить нужный короткий текст в meta товара и выводить уже его.

Итог: технически это делается через woocommerce_after_shop_loop_item_title, но сначала определите логику: первая вариация, все вариации или динамический выбор. Для каталога чаще всего достаточно короткого текста первой/основной вариации.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно