Если вы работаете с 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. Это поможет улучшить информативность вашего интернет-магазина и предоставит пользователям более полную информацию о товарах.

