Как добавить дополнительный текстовый редактор в категорию товаров woocommerce работающего на elementor

Как добавить дополнительный текстовый редактор в категорию товаров woocommerce работающего на elementor

Если вы рабо­та­е­те с WordPress и исполь­зу­е­те пла­гин Elementor для созда­ния сво­е­го интер­нет-мага­зи­на на WooCommerce, вам может потре­бо­вать­ся доба­вить допол­ни­тель­ное тек­сто­вое поле для опи­са­ния кате­го­рии. Это может быть полез­но, напри­мер, для раз­ме­ще­ния более деталь­ной инфор­ма­ции о кате­го­рии, кото­рую нель­зя предо­ста­вить через стан­дарт­ные поля WooCommerce по раз­лич­но­го рода причинам.

Вот неко­то­рые шаги, кото­рые помо­гут вам доба­вить допол­ни­тель­ный тек­сто­вый редак­тор в кате­го­рию това­ров WooCommerce, рабо­та­ю­ще­го на Elementor.

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

Добавить комментарий

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