Заменить текстовое поле описания таксономии на визуальный редактор WYSIWYG
Есть ли способ добавить редактор TinyMCE для поля описания таксономии на страницах редактирования терминов? Решение по ссылке (Можно ли добавить визуальный редактор в поле описания для пользовательских таксономий?) больше не работает, вероятно из-за того, что функция wp_tiny_mce устарела.

Вы можете использовать хук действия {$taxonomy}_edit_form_fields для добавления HTML в таблицу редактирования термина. В этом HTML вы можете удалить текстовое поле описания и добавить редактор TinyMCE.
add_action("{$taxonomy}_edit_form_fields", 'add_form_fields_example', 10, 2);
function add_form_fields_example($term, $taxonomy){
?>
<tr valign="top">
<th scope="row">Описание</th>
<td>
<?php wp_editor(html_entity_decode($term->description), 'description', array('media_buttons' => false)); ?>
<script>
jQuery(window).ready(function(){
jQuery('label[for=description]').parent().parent().remove();
});
</script>
</td>
</tr>
<?php
}

Собираюсь протестировать. Кстати, у тебя опечатка в третьей строке - "function." :)

Мне действительно очень жаль. Спасибо userabuser за исправление моей опечатки. (Я уже собирался уходить домой вчера из-за ужасной головной боли, когда решил ответить на "ещё один" вопрос здесь.)

Я получаю ошибку "Undefined variable: taxonomy". Как это работает? Я добавил это в functions.php

Я попробовал код, и он работает, но проблема в том, что я не знаю, как применить его к моей ситуации: https://wordpress.stackexchange.com/questions/318814/how-to-modify-default-taxonomy-field-to-a-single-text-field

Для тех, кто все еще ищет решение этой проблемы, стоит упомянуть, что плагин Yoast SEO автоматически добавляет WYSIWYG-редактор для описаний на странице редактирования терминов таксономии.
Если вы не планируете использовать этот плагин для SEO, не устанавливайте его только ради этой функциональности. Учитывая популярность плагина, я решил отметить это здесь, так как это может сэкономить время для тех, кто уже планирует его установить.

Не могли бы вы подсказать, где находится эта настройка? Это функция премиум-версии или она доступна в бесплатном плагине? У меня в бесплатной версии это не работает...

@lcm, эта функция была частью бесплатного плагина, и я почти уверен, что она активировалась автоматически. Попробуйте на чистой установке WordPress, и если это сработает, то, вероятно, что-то ломает функциональность. Также стоит проверить консоль на наличие ошибок JavaScript.

Похоже, это доступно только на экране редактирования, но не на экране добавления. То есть сначала вам нужно добавить элемент, а затем отредактировать его, чтобы увидеть полный редактор.

Также стоит отметить, что вам необходимо включить опцию "Показывать SEO-настройки для таксономии" в настройках Yoast для данной таксономии, чтобы активировать визуальный редактор. Я использую некоторые таксономии для организационных целей, но не хочу индексировать архивные страницы, однако оставляю эту настройку включённой, чтобы активировать визуальный редактор в поле описания.

Ответ Олега Бутюзова вероятно был актуален в 2015 году, так как был принят и получил голоса. В 2024 году для тех, кто столкнулся с той же проблемой в WordPress 6.4.2, он больше не работает.
Я предлагаю другое решение:
add_action("{$taxonomy}_edit_form_fields", 'tinymce_on_description', 10, 2);
function tinymce_on_description($term, $taxonomy){
?>
<script>
jQuery(document).ready(function($) {
wp.editor.initialize('description', {
tinymce: {
// настраиваемые параметры для TinyMCE
toolbar1: 'formatselect | bold italic | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link',
plugins: 'link,lists,textcolor,colorpicker',
menubar: false,
statusbar: false,
},
quicktags: true,
mediaButtons: false,
});
});
</script>
<?php
}
add_action('init','disable_kses');
function disable_kses() {
remove_filter('pre_term_description', 'wp_filter_kses');
}
Внутри функции jQuery вызывается wp.editor.initialize('description', {...})
для инициализации редактора TinyMCE на элементе с ID description
, которым обычно является текстовое поле для описания термина. Это основа решения.
Отключение функции wp_filter_kses
— это важный шаг в данном решении, так как она обычно фильтрует все HTML-теги, кроме ограниченного набора (например, жирного и курсивного текста), из описаний терминов в целях безопасности. Удалив этот фильтр, мы позволяем редактору TinyMCE полностью использовать свои возможности форматирования, включая такие опции, как переносы строк, несколько абзацев, цвета и выравнивание текста. Без этого изменения многие расширенные функции форматирования, предоставляемые редактором TinyMCE, будут удалены при сохранении, что значительно ограничит его полезность.
Однако важно учитывать, что отключение wp_filter_kses
может потенциально создать угрозы безопасности, если пользователи с правами редактирования описаний терминов вставят вредоносный код. Рекомендуется учитывать роли и возможности пользователей или реализовать дополнительные меры санитизации для снижения таких рисков.
