Как вывести полное описание товара в категории Woocommerce?

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

Как в Woocommerce в категориях вывести первые 300 знаков именно полных описаний товаров?

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

Для отображения первых 300 знаков полных описаний товара в категориях Woocommerce необходимо в файл шаблона functions.php добавить код:

//Отображение части полного описания товаров в категории function add_full_description_in_product_categories() { 	global $product; 	if ( ! $product->post->post_content ) return;  	echo '<div class="cat_shop_full_description">'; 	$full_description = substr($product->post->post_content, 0, 300);//обрезаем текст до 300 символов 	$full_description = rtrim($full_description, "!,.-");//обрезаем знаки 	$full_description = substr($full_description, 0, strrpos($full_description, ' '));//обрезаем по последний пробел 	$full_description = $full_description.' ...';//ставим троеточие 	echo apply_filters( 'woocommerce_description', $full_description ); 	echo '</div>';  } add_action('woocommerce_after_shop_loop_item_title', 'add_full_description_in_product_categories', 7);

//Отображение части полного описания товаров в категории function add_full_description_in_product_categories() { global $product; if ( ! $product->post->post_content ) return; echo '<div class="cat_shop_full_description">'; $full_description = substr($product->post->post_content, 0, 300);//обрезаем текст до 300 символов $full_description = rtrim($full_description, "!,.-");//обрезаем знаки $full_description = substr($full_description, 0, strrpos($full_description, ' '));//обрезаем по последний пробел $full_description = $full_description.' ...';//ставим троеточие echo apply_filters( 'woocommerce_description', $full_description ); echo '</div>'; } add_action('woocommerce_after_shop_loop_item_title', 'add_full_description_in_product_categories', 7);

По желанию, можно в файл стилей добавить:

.cat_shop_full_description {color:#000000; margin-bottom: 12px; font-size: 18px;}

.cat_shop_full_description {color:#000000; margin-bottom: 12px; font-size: 18px;}

Пример: https://ramwell.ru/product-category/korpusa/

Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Вывести первые 300 знаков полного описания товара в категориях WooCommerce можно через hook в карточке товара. Но лучше не использовать простой substr(): он ломает кириллицу и может обрезать HTML посередине тега. Используйте wp_trim_words() или аккуратную обрезку после удаления HTML.

Пример:

add_action('woocommerce_after_shop_loop_item_title', function () {
    global $product;
 
    if (!$product) {
        return;
    }
 
    $content = get_post_field('post_content', $product->get_id());
    if (!$content) {
        return;
    }
 
    $text = wp_strip_all_tags(strip_shortcodes($content));
    $text = mb_substr($text, 0, 300);
    $text = trim($text);
 
    echo '<div class="cat-shop-full-description">';
    echo esc_html($text) . '...';
    echo '</div>';
}, 15);

add_action('woocommerce_after_shop_loop_item_title', function () { global $product; if (!$product) { return; } $content = get_post_field('post_content', $product->get_id()); if (!$content) { return; } $text = wp_strip_all_tags(strip_shortcodes($content)); $text = mb_substr($text, 0, 300); $text = trim($text); echo '<div class="cat-shop-full-description">'; echo esc_html($text) . '...'; echo '</div>'; }, 15);

Если хотите резать по словам, а не по символам:

$text = wp_trim_words($text, 45, '...');

$text = wp_trim_words($text, 45, '...');

Для большого каталога учитывайте, что полное описание может содержать shortcode, таблицы, изображения и тяжёлую разметку. В карточке категории лучше выводить короткое описание товара post_excerpt, а не полное. Оно как раз создано для краткого текста.

Если всё же нужен фрагмент полного описания, обязательно стилизуйте блок и проверьте сетку товаров на мобильных. Слишком длинный текст в карточке может растянуть товарную плитку и ухудшить UX.

Ещё момент: не вставляйте этот код прямо в родительскую тему WooCommerce. Лучше разместить его в дочерней теме или маленьком плагине. После изменения очистите кэш и проверьте категорию, поиск, распродажу и страницу с товарами без описания. Код должен молча пропускать пустые товары, а не выводить пустые div в каждой карточке.

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

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

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

комментарий

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

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