По умолчанию стандартные средства WooCommerce позволяют задать описание категории товара, которое зачастую вставляется сверху (в зависимости от шаблона), тем самым создает никому ненужное текстовое поле, перекрывая витрину интернет-магазина.
Многие вебмастера, для улучшения юзабилити страницы, желают это самое описание опустить вниз. Мы же в данной статье рассмотрим более эффективный метод, не трогая стандартный инструмент (вдруг понадобится для коротких заметок и пояснений), а именно создание дополнительного поля для описания категории товара, которое будет отображаться снизу, не мешая пользователям ознакомиться с продукцией.
Способ достаточно простой. Все, что нам понадобится, это файл functions.php от вашего шаблона (в некоторых темах может называться по другому). Копируем и вставляем следующий код в самый низ файла (лучше всего это делать в редакторе с поддержкой UTF-8, например, Notepad++):
add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 ); function wpm_taxonomy_edit_meta_field($term) { $t_id = $term->term_id; $term_meta = get_option( "taxonomy_$t_id" ); $content = $term_meta['custom_term_meta'] ? wp_kses_post( $term_meta['custom_term_meta'] ) : ''; $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' ); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="term_meta[custom_term_meta]">Дополнительное описание</label></th> <td> <?php wp_editor( $content, 'product_cat_details', $settings ); ?> </td> </tr> <?php } add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 ); add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 ); function save_taxonomy_custom_meta( $term_id ) { if ( isset( $_POST['term_meta'] ) ) { $t_id = $term_id; $term_meta = get_option( "taxonomy_$t_id" ); $cat_keys = array_keys( $_POST['term_meta'] ); foreach ( $cat_keys as $key ) { if ( isset ( $_POST['term_meta'][$key] ) ) { $term_meta[$key] = wp_kses_post( stripslashes($_POST['term_meta'][$key]) ); } } update_option( "taxonomy_$t_id", $term_meta ); } } add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' ); function wpm_product_cat_archive_add_meta() { $t_id = get_queried_object()->term_id; $term_meta = get_option( "taxonomy_$t_id" ); $term_meta_content = $term_meta['custom_term_meta']; if ( $term_meta_content != '' ) { if ( is_tax( array( 'product_cat', 'product_tag' ) ) && 0 === absint( get_query_var( 'paged' ) ) ) { echo '<div class="woo-sc-box normal rounded full">'; echo apply_filters( 'the_content', $term_meta_content ); echo '</div>'; } } }
Здесь же заложено правило, чтобы при наличии большого количества товаров, разбитых на нумерованные страницы (1, 2, 3 и пр.), нижнее описание выводились только на первой странице, не создавая дублированного контента.
6,199 total views, 3 views today
27 комментариев. Оставить новый
Здравствуйте, отличная статья и очень нужное дело в Woocommerce, спасибо! А может вы подскажете, как при пагинации убирать только нижнее описание?
Здравствуйте. В статье была допущена ошибка (исправил), правило касалось только нижнего описания. Вывод верхнего же, видимо, заложено в самом плагине или вашем шаблоне. Чтобы оставить верхнее описание на страницах категории товара, добавьте следующую функцию.
[php]
function my_theme_woocommerce_taxonomy_archive_description() {
if ( is_tax( array( ‘product_cat’, ‘product_tag’ ) ) && get_query_var( ‘paged’ ) != 0 ) {
$description = wc_format_content( term_description() );
if ( $description ) {
echo ‘<div class="term-description">’ . $description . ‘</div>’;
}
}
}
add_action( ‘woocommerce_archive_description’, ‘my_theme_woocommerce_taxonomy_archive_description’);
[/php]
Спасибо Вам огромное!!!
Можно ли модифицировать код, чтобы дополнительное описание выводилось и в метках? если да, то отпишитесь ))
В метках к товарам?
Когда на странице товара на метку нажимаеш тебя перенаправляет на страницу товаров по метке с юрл типо /product-tag/
но там только одно верхнее описание хотелось бы и нижнее пример вот метка https://stinka.com.ua/product-tag/125-mm/ тут верхнее описание есть а нижнего нету а вот категория в которой по вашему коду есть и нижнее и верхнее https://stinka.com.ua/product-category/gipsokartonnye-sistemy/gipsokarton/
Надо будет посмотреть на досуге.
Появилось решение по вопросу доп описания к меткам товара product-tag/метка? Также хотельсь узнать как выводить описание атрибута товара, например бренда.
Пока нет.
Добрый день. Подскажите, пожалуйста, как подобное (второе) описание вывести на страницы категорий?
Здравствуйте. Предположу, что нужно вставить этот же самый код, только изменить некоторые данные. На практике не пробовал.
Мне тоже нужно второе описание в обычной рубрике(категории) без магазина.
А какие данные изменить ума не хватает..
В данном случае этот код вам вряд ли поможет.
Возможно стоит попробовать такой способ, только сделать одно поле с типом textarea и вывести его с помощью функции или изменений в шаблоне.
Добрый день! Спасибо большое! Очень полезное дополнение!
как для этого дополнительного описания подключить плагин qTranslate‑X? сейчас же, что было записано в этом дополнительном поле дублируется о всех языковых версиях. и если в кокой то из версий изменить содержимое, оно изменяется во всех версиях. Спасибо
Здравствуйте. К сожалению, не могу вам помочь, не работал с данным плагином.
И как добавить класс к нижнему описанию во всех категориях ? большое спасибо код просто суперский и очень полезен!
Вы имеете в виду класс от CSS?
Добрый день! А как тоже самое сделать для заголовка и H1 категорий товаров woocommerce. Спасибо!
Здравствуйте. Я так понимаю, что заголовок – это title, он задается с помощью плагина (например, Yoast SEO). Можно сделать массовое заполнение title, но руками получится качественнее.
Вывести форму для заполнения тега H1 можно, об этом я расскажу в одной из следующих статей.
Добрый день. Через данный код не получается вставить изображение. Как это исправить?
Здравствуйте. Вместе с формой появляются инструменты для редактирования контента, в том числе вставка изображений. Пример привел в виде скриншота в конце статьи. У вас не так?
Добрый вечер.
Помогите пожалуйста решить проблему, на моем шаблоне не выводит доп. описание.
В админ панели все появляется, ввожу текст, а на странице категории текста нету.
Возможно связано с нестандартным шаблоном.
Как можно решить эту проблему.
Здравствуйте. Не знаю, с чем это может быть связано в вашем случае. Вообще представленный код добавляет функцию вывода описания.
В моём случае была включена пагинация “Бесконечная прокрутка” в следствии чего текст не выводился.
Благодарю! Помог код в комментариях!
Привет. Подскажи как вывести код на всех страницах категории, а не только на первой, и вывести не внизу, а над списком товаров?