Если вы работаете с WordPress и используете плагин Elementor для создания своего интернет-магазина на WooCommerce, вам может потребоваться добавить дополнительное текстовое поле для описания категории. Это может быть полезно, например, для размещения более детальной информации о категории, которую нельзя предоставить через стандартные поля WooCommerce по различного рода причинам.
Вот некоторые шаги, которые помогут вам добавить дополнительный текстовый редактор в категорию товаров WooCommerce, работающего на Elementor.
- Регистрируем дополнительный текстовый редактор для категории товаров в functions.php вашей темы.
// Добавление пользовательского поля в форму редактирования категории товаров add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 ); function wpm_taxonomy_edit_meta_field( $term, $taxonomy ) { $term_id = $term->term_id; // Получение пользовательской метаинформации из термина $term_meta = get_term_meta( $term_id, 'custom_term_meta', true ); // Получение сохраненного текста с учетом санитизации $content = $term_meta ? wp_kses_post( $term_meta ) : ''; // Создание уникального идентификатора для поля редактора $editor_id = 'product_cat_details_' . $term_id; // Настройки редактора $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' ); ?> <tr class="form-field"> <th scope="row" valign="top"> <label for="<?php echo esc_attr( $editor_id ); ?>">Дополнительный текст шорткод [product_cat_archive_text]</label> </th> <td> <?php wp_editor( $content, $editor_id, $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 = wp_kses_post( stripslashes( $_POST['term_meta']['custom_term_meta'] ) ); // Валидация и сохранение метаинформации if ( ! empty( $term_meta ) ) { update_term_meta( $t_id, 'custom_term_meta', $term_meta ); } else { delete_term_meta( $t_id, 'custom_term_meta' ); } } }
2. Регистрируем также в functions.php шорткод. Это позволит нам выводить дополнительный текст в любом месте категории построенного на Elementor.
// Шорткод для вывода текста категории function product_cat_text_shortcode( $atts ) { $atts = shortcode_atts( array( 'cat_id' => 0 ), $atts, 'product_cat_text' ); $term_id = intval( $atts['cat_id'] ); // Получение сохраненного текста с учетом санитизации $term_meta = get_term_meta( $term_id, 'custom_term_meta', true ); return $term_meta ? wp_kses_post( $term_meta ) : ''; } add_shortcode( 'product_cat_text', 'product_cat_text_shortcode' );
3. Теперь добавьте следующий код в functions.php вашей темы, чтобы обеспечить автоматическое определение текущей категории продукта и отображение соответствующего текста:
// Шорткод для вывода текста архива категории function product_cat_archive_text_shortcode() { $queried_object = get_queried_object(); if ( isset( $queried_object->term_id ) ) { $term_id = $queried_object->term_id; return do_shortcode( "[product_cat_text cat_id=$term_id]" ); } return ''; } add_shortcode( 'product_cat_archive_text', 'product_cat_archive_text_shortcode' );
4. Вставьте шорткод [product_cat_archive_text]
в виджете “Текст” или “HTML” Elementor на странице архива категории продукта.
Теперь у вас есть возможность добавлять более детальное описание товаров на странице категории, используя дополнительный текстовый редактор в WooCommerce при использовании Elementor. Это поможет улучшить информативность вашего интернет-магазина и предоставит пользователям более полную информацию о товарах.