Înlocuirea câmpului de descriere a taxonomiei cu editor vizual/WYSIWYG
Există vreo metodă de a adăuga un editor TinyMCE în câmpul de descriere a taxonomiei pe paginile de editare a termenilor? Soluția prezentată aici (Poți adăuga editorul vizual în câmpul de descriere pentru taxonomiile personalizate?) nu mai funcționează, probabil din cauza faptului că funcția wp_tiny_mce a fost învechită.
Puteți utiliza un hook de acțiune {$taxonomy}_edit_form_fields pentru a adăuga HTML în tabelul de editare a termenului. În acel HTML puteți elimina textarea pentru descriere și puteți adăuga editorul 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">Descriere</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
}

Sunt pe punctul de a testa. Apropo, ai o greșeală de tipar pe linia 3, "function." :)

Îmi pare foarte rău pentru asta. Mulțumesc userabuser pentru corectarea greșelii mele. (Eram pe punctul de a pleca acasă ieri din cauza unei dureri groaznice de cap când am decis să răspund la 'încă o' întrebare aici.)

Primesc "Undefined variable: taxonomy". Cum funcționează asta? L-am pus în functions.php

Am încercat codul și funcționează, dar problema este că nu știu cum să-l aplic în cazul meu: https://wordpress.stackexchange.com/questions/318814/how-to-modify-default-taxonomy-field-to-a-single-text-field

Pentru cei care încă caută o soluție la această problemă, merită menționat faptul că plugin-ul Yoast SEO adaugă automat un editor WYSIWYG pentru descrieri pe ecranul de editare a termenilor de taxonomie.
Dacă nu intenționați să folosiți acel plugin pentru SEO, vă rugăm să nu-l instalați doar pentru această funcționalitate. Având în vedere popularitatea plugin-ului, am considerat că merită să menționez acest lucru aici, deoarece ar putea economisi timpul cuiva care plănuiește deja să instaleze plugin-ul.

Unde se află această setare, dacă nu te superi că întreb? Este o funcționalitate premium sau face parte din versiunea gratuită a plugin-ului? Nu văd că ar funcționa în varianta gratuită...

@lcm, această funcționalitate făcea parte din versiunea gratuită a plugin-ului și sunt destul de sigur că se activa automat. Încearcă pe o instalație proaspătă de WordPress și dacă funcționează, atunci probabil ceva strică funcționalitatea. Ar putea fi util să verifici și consola pentru a vedea dacă apar erori de JavaScript.

Se pare că această opțiune este disponibilă doar pe ecranul de Editare, dar nu pe cel de Adăugare. Deci mai întâi va trebui să adaugi elementul, apoi să îl editezi pentru a vedea editorul complet.

De asemenea, merită menționat că trebuie să activezi opțiunea "Afișare setări SEO pentru Taxonomie" în cadrul setărilor Yoast pentru acea taxonomie, pentru a activa editorul WYSIWYG. Există unele taxonomii pe care le folosesc în scopuri organizatorice, dar nu doresc ca pagina de arhivă să fie indexată. Totuși, păstrez această setare activată doar pentru a permite funcționarea editorului WYSIWYG în caseta de descriere.

Răspunsul lui Oleg Butuzov a fost probabil valid în 2015, întrucât a fost acceptat și votat. În 2024, pentru cei care au întâmpinat aceeași problemă cu WordPress 6.4.2, soluția nu mai funcționează.
Propun o soluție alternativă:
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: {
// opțiuni personalizabile pentru 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');
}
În cadrul funcției jQuery, wp.editor.initialize('description', {...})
este apelată pentru a inițializa editorul TinyMCE pe elementul cu ID-ul description
, care este de obicei textarea pentru descrierea termenului. Aceasta este esența soluției.
Dezactivarea funcției wp_filter_kses
este un pas crucial în această soluție, deoarece ea filtrează în mod obișnuit toate tagurile HTML, cu excepția unui set limitat (cum ar fi textul îngroșat și cursiv), din descrierile termenilor din motive de securitate. Prin eliminarea acestui filtru, permitem editorului TinyMCE să utilizeze pe deplin capacitățile sale de formatare avansată, permițând opțiuni mai variate, cum ar fi întreruperi de linie, paragrafe multiple, culori și aliniere a textului. Fără această ajustare, multe dintre funcțiile avansate oferite de editorul TinyMCE ar fi eliminate la salvare, limitând semnificativ utilitatea acestuia.
Cu toate acestea, este important de menționat că dezactivarea wp_filter_kses
ar putea introduce riscuri de securitate dacă utilizatorii cu drepturi de editare a descrierilor termenilor introduc cod rău intenționat. Este recomandat să se ia în considerare rolurile și capabilitățile utilizatorilor sau să se implementeze măsuri suplimentare de sanitizare pentru a atenua astfel de riscuri.
