Вопрос или проблема
Мне удалось добавить необходимые пользовательские поля на страницу редактирования категории (код ниже). Все, что я хотел бы сделать, это добавить редактор 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-код вручную. Если у вас возникнут дополнительные вопросы или вам потребуется дальнейшая помощь, не стесняйтесь обращаться.