Utilizarea TinyMCE cu textarea în metadatele tipurilor personalizate de postări
Încerc să utilizez pluginul http://www.tinymce.com/ pentru a adăuga TinyMCE la câmpurile textarea din metadatele pe care le-am creat. Am căutat alte metode, dar fie nu funcționează, fie nu am înțeles conceptul. Iată ce încerc acum --
Am încercat să creez un plugin pentru a adăuga scriptul în panoul de administrare --
add_action('admin_init', 'admin_load_scripts');
function admin_load_scripts() {
$js_file = plugins_url( '/tinymce/jquery.tinymce.min.js', __FILE__ );
wp_enqueue_script('jquery.tinymce.min', $js_file, array('jquery'));
}
Apoi trebuie să-l apelez astfel --
<script>
tinymce.init({selector:'textarea'});
</script>
Dar nu sunt sigur cum să fac asta, având în vedere că este pentru backend și nu pentru frontend. Cum pot realiza acest lucru?
ACTUALIZAT
Acesta este codul meu pentru metadate. http://pastebin.com/WcC51uA9
Am încercat următoarele metode (plasându-le în functions.php, bineînțeles), iar în mare parte fie nu au funcționat, fie apăreau în partea de sus sau de jos a paginii. Nu apăreau deloc pe câmpul textarea. ---

Iată un pastebin cu codul tău inclus.
Obține vechea valoare a tinyMCE
$meta_biography = get_post_meta( $post->ID, 'meta_biography', true );
Apelează editorul TinyMCE
wp_editor( $meta_biography, 'biography', array(
'wpautop' => true,
'media_buttons' => false,
'textarea_name' => 'meta_biography',
'textarea_rows' => 10,
'teeny' => true
) );
Salvează valoarea editorului sau, dacă nu există nimic, șterge vechile valori.
if( isset( $_POST['meta_biography'] ) && $_POST['meta_biography'] != '' ) {
update_post_meta( $post_id, 'meta_biography', $_POST['meta_biography'] );
} else {
delete_post_meta( $post_id, 'meta_biography' );
}
Dacă dorești să adaugi mai multe opțiuni editorului - Poți consulta Codex sau verifică acest articol util de la WPTuts. Vei dori să folosești tinymce
și să-i transmiți un array de setări. Poate fi necesar să elimini teeny => true
din wp_editor()
deoarece Codex menționează că va folosi doar o configurație minimală a editorului.

mulțumesc. Ultima întrebare pe care o aveam era că am văzut articolul de pe wptuts și array-ul de setări, dar nu am văzut nicio mențiune despre transmiterea unui array de setări pentru "kitchen sink". Aveți vreo idee despre asta? Voiam să creez un editor pentru un alt câmp care permite doar modificarea culorii fontului.

@mygm26 - în articolul WPTuts, se transmite theme_advanced_buttons1
- dacă dorești un al doilea rând, poți transmite și theme_advanced_buttons2
sau oricâte rânduri dorești. În articolul WPTuts se află și wp_adv
la sfârșitul lui theme_advanced_buttons1
, care este necesar pentru a afișa al doilea sau al treilea rând de butoane. Dacă încerci doar să modifici culoarea - aș sugera să te uiți la Color Picker care este deja integrat în WordPress.

Ok, am înțeles, mulțumesc. Există vreo modalitate de a ascunde "kitchen sink" pentru anumite instanțe? Folosesc codul wp editor pentru mai multe zone de text, dar voiam să ascund "kitchen sink" pentru una dintre ele @Howdy_McGee

@mygm26 Nu sunt 100% sigur de asta și încercam să găsesc răspunsul - poți consulta această întrebare, dar dacă reușești să afli, anunță-mă și pe mine cum: http://wordpress.stackexchange.com/questions/117395/tinymce-show-advanced-options-2nd-row-by-default

// pentru pagini folosește 'edit_page_form' ca prim parametru. Vezi și comentariul meu mai jos.
add_action( 'edit_form_advanced', 'my_meta_editor' );
function my_meta_editor() {
// setează 'your_meta_key' la cheia reală
$content = get_post_meta($post->ID, 'your_meta_key', true);
// doar litere mici [a-z], fără cratime și underscore-uri
$editor = 'mymetaeditor';
// Vezi comentariul meu mai jos
$editor_settings = array();
wp_editor( $content, $editor, $editor_settings);
}
Caută Acțiuni Administrative pentru edit_form_after_title
, edit_form_after_editor
, edit_form_advanced
dacă vrei să schimbi locația meta box-ului.
Vezi și wp_editor pentru setările editorului.

mulțumesc pentru răspuns, nu sunt sigur cum să aplic asta în situația mea. Voi actualiza răspunsul meu cu codul pe care îl folosesc pentru a crea metabox-urile mele.

Oriunde dorești să ai tinymce, poți spune ceva de genul: http://pastebin.com/6N5adFip -- Din experiența mea, acesta este cel mai bine plasat într-o zonă mare de conținut, cum ar fi sub Editorul Principal de Postări sau orice altceva ai avea.

@Howdy_McGee ok, deci dacă pun codul de pe pastebin în fișierul functions al temei mele și înlocuiesc id-ul, atunci va afișa editorul pentru acel textarea?

Teoretic da, tot ce @MaxYudin ți-a oferit sunt modalități de a afișa wp_editor(); ar trebui să poți să-l faci funcțional de acolo. Este destul de simplu. Altfel, o căutare rapidă ar trebui să ofere multe rezultate. Spune-mi dacă reușești să-l faci funcțional!

Nu reușesc să-l fac funcțional. Am încercat să folosesc și acest cod -- `// pentru pagini folosește 'edit_page_form' ca prim parametru. Vezi și comentariul meu mai jos. add_action( 'edit_form_advanced', 'my_meta_editor' );
function my_meta_editor() {
// setează 'your_meta_key' la cheia reală
$content = get_post_meta($post->ID, 'att_meta_bio', true);
// doar litere mici [a-z], fără cratime și underscore-uri
$editor = 'mymetaeditor';
// Vezi comentariul meu mai jos
$editor_settings = array();
wp_editor( $content, $editor, $editor_settings);
}` @Max Yudin @Howdy_McGee

Lipește-l în functions.php
situat în directorul theme
pe care îl folosești.

Poți să furnizezi un pastebin cu codul tău, inclusiv exemplele din el - s-ar putea să fie doar o mică eroare de sintaxă.

@Howdy_McGee Am încercat câteva metode și am actualizat întrebarea mea cu linkurile către pastebin-urile cu ce am încercat.

@mygm26 Nu sunt sigur de ce nu funcționează nimic pentru tine. Am încercat să integrez metoda mea în codul tău de widget-uri, pe care poți să-l încerci: http://pastebin.com/HkzarH7h apoi obții valoarea prin: get_post_meta($post->ID, 'meta_additional', true);

@Howdy_McGee pare să se apropie de soluție, dar acum editorul pare să se suprapună peste alte câmpuri, făcând imposibilă editarea lor. Când încerc să adaug text în biografie și să îl salvez, nu se salvează. De asemenea, textul pe care îl aveam acolo înainte să adaug codul, nu mai este prezent.

Adaugă niște HTML și CSS pentru a crea spațiere, caută "WordPress Add CSS Admin Panel" și poți crea stiluri specifice. De asemenea - greșeala mea, când apelezi wp_editor ar trebui să-i pasezi $meta_biography
în loc de $meta_additional
ceea ce ar trebui să rezolve problema de salvare.

@Howdy_McGee Uau, mulțumesc! Până acum totul pare să funcționeze. A trebuit să folosesc clear:both pe containerul editorului și acum pare ok. Singura problemă rămasă este cum pot adăuga mai multe opțiuni pentru editor? Cum ar fi culoarea fontului? De asemenea, poți să postezi răspunsul tău ca un răspuns la întrebare ca să îl pot marca corect?

Această funcție a funcționat perfect pentru mine, doar adăugați-o în fișierul functions.php și faceți câmpurile personalizate textarea și sunteți gata:
//adaugă editor tinymce la câmpurile personalizate textarea
function admin_add_wysiwyg_custom_field_textarea()
{ ?>
<script type="text/javascript">/* <![CDATA[ */
jQuery(function($){
var i=1;
$('textarea').each(function(e)
{
var id = $(this).attr('id');
if (!id)
{
id = 'customEditor-' + i++;
$(this).attr('id',id);
}
tinyMCE.execCommand("mceAddEditor", false, id);
tinyMCE.execCommand('mceAddControl', false, id);
});
});
/* ]]> */</script>
<?php }
add_action( 'admin_print_footer_scripts', 'admin_add_wysiwyg_custom_field_textarea', 99 );
