Добавление tinymce в пользовательские поля на странице редактирования категории

Вопрос или проблема

Мне удалось добавить необходимые пользовательские поля на страницу редактирования категории (код ниже). Все, что я хотел бы сделать, это добавить редактор tinymce к текстовым областям #Category_Extras_Features и #Category_Extras_Applications?

    // Добавить пользовательские поля на страницы редактирования категорий
// имя опции
define('Category_Extras', 'Category_Extras_option');

// ваши поля (форма)
add_filter('edit_category_form', 'Category_Extras');
function Category_Extras($tag) {
    $tag_extra_fields = get_option(Category_Extras);

    ?>

<table class="form-table">
        <tr class="form-field">
            <th scope="row" valign="top"><label for="Category_Extras_Features">Особенности категории</label></th>
            <td><textarea style="width: 97%;" cols="50" rows="5" name="Category_Extras_Features" id="Category_Extras_Features"><?php  echo $tag_extra_fields[$tag->term_id]['Category_Extras_Features']; ?></textarea>

            <p class="description">Это не применимо ко всем категориям, но позволяет отображать дополнительную информацию на странице категории.</p></td>
        </tr>
        <tr class="form-field">
            <th scope="row" valign="top"><label for="Category_Extras_Applications">Приложения категории</label></th>
            <td><textarea style="width: 97%;" cols="50" rows="5" name="Category_Extras_Applications" id="Category_Extras_Applications"><?php  echo $tag_extra_fields[$tag->term_id]['Category_Extras_Applications']; ?></textarea>
            <p class="description">Это не применимо ко всем категориям, но позволяет отображать дополнительную информацию на странице категории.</p></td>
        </tr>
</table>



    <?php
}


// когда форма отправляется, и категория обновляется (в вашем случае опция будет обновлена значениями ваших пользовательских полей выше)
add_filter('edited_terms', 'update_Category_Extras');
function update_Category_Extras($term_id) {
  if($_POST['taxonomy'] == 'category'):
    $tag_extra_fields = get_option(Category_Extras);
    $tag_extra_fields[$term_id]['Category_Extras_Features'] = strip_tags($_POST['Category_Extras_Features']);
    $tag_extra_fields[$term_id]['Category_Extras_Applications'] = strip_tags($_POST['Category_Extras_Applications']);
    update_option(Category_Extras, $tag_extra_fields);
  endif;
}


// когда категория удаляется
add_filter('deleted_term_taxonomy', 'remove_Category_Extras');
function remove_Category_Extras($term_id) {
  if($_POST['taxonomy'] == 'category'):
    $tag_extra_fields = get_option(Category_Extras);
    unset($tag_extra_fields[$term_id]);
    update_option(Category_Extras, $tag_extra_fields);
  endif;
}

Это возможно, и если да, то кто-нибудь знает, как это сделать?

С уважением,

Дэйв

Следуйте этому руководству TinyMCE в плагинах WordPress и вы достигнете этого.

Ответ или решение

Для добавления редактора TinyMCE в ваши настраиваемые текстовые поля на странице редактирования категорий в WordPress, вы можете следовать следующему пошаговому подходу. Я также учитываю ваш предыдущий код, чтобы убедиться, что все интеграции будут работать без проблем.

Шаг 1: Подключение скриптов TinyMCE

Во-первых, необходимо убедиться, что скрипты TinyMCE загружаются на странице редактирования категории. Это можно сделать с помощью хука admin_enqueue_scripts.

add_action('admin_enqueue_scripts', 'enqueue_tinymce_scripts');
function enqueue_tinymce_scripts() {
    // Проверим, что мы находимся на странице редактирования категорий
    $screen = get_current_screen();
    if ($screen->id === 'edit-category' || $screen->id === 'category') {
        wp_enqueue_script('editor');
        wp_enqueue_script('media-upload');
        wp_enqueue_script('thickbox');
        wp_enqueue_style('thickbox');
    }
}

Шаг 2: Инициализация TinyMCE на текстовых областях

Теперь вам нужно инициализировать TinyMCE на указанных вами текстовых областях после их рендеринга. Это можно сделать, добавив JavaScript код, который будет превращать текстовые области в редакторы TinyMCE.

Добавьте следующий код в ваш файл:

add_action('admin_footer', 'init_tinymce_for_custom_fields');
function init_tinymce_for_custom_fields() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            // Параметры для TinyMCE
            tinymce.init({
                selector: '#Category_Extras_Features, #Category_Extras_Applications',
                height: 300,
                menubar: false,
                plugins: 'lists link image',
                toolbar: 'undo redo | formatselect | bold italic | alignleft aligncenter alignright | bullist numlist | link image',
                setup: function(editor) {
                    // Дополнительная настройка редактора
                }
            });
        });
    </script>
    <?php
}

Шаг 3: Обработка и сохранение данных

Теперь нужно убедиться, что данные из редакторов TinyMCE корректно сохраняются в базе данных. Вам уже имеется функция update_Category_Extras, но необходимо обновить код, чтобы не удалять HTML-теги, так как редактор TinyMCE создает разметку.

add_filter('edited_terms', 'update_Category_Extras');
function update_Category_Extras($term_id) {
    if($_POST['taxonomy'] == 'category'):
        $tag_extra_fields = get_option(Category_Extras);
        $tag_extra_fields[$term_id]['Category_Extras_Features'] = wp_kses_post($_POST['Category_Extras_Features']);
        $tag_extra_fields[$term_id]['Category_Extras_Applications'] = wp_kses_post($_POST['Category_Extras_Applications']);
        update_option(Category_Extras, $tag_extra_fields);
    endif;
}

Шаг 4: Локализация и итоговая проверка

Проверьте, корректно ли работают ваши текстовые области. Теперь при редактировании категорий вы должны видеть редакторы TinyMCE для "Category Features" и "Category Applications". Обратите внимание на конфигурацию плагина TinyMCE, которую вы используете — вы всегда можете добавить или изменить доступные элементы инструментов и параметры редактора в соответствии с вашими требованиями.

Заключение

Используя указанные выше шаги, вы сможете интегрировать TinyMCE в ваши пользовательские поля на странице редактирования категорий. Это позволит администраторам вашего сайта легко добавлять форматированный текст в эти поля без необходимости писать HTML-код вручную. Если у вас возникнут дополнительные вопросы или вам потребуется дальнейшая помощь, не стесняйтесь обращаться.

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

Капча загружается...