web-dev-qa-db-fra.com

Utilisation de TinyMce avec textareas dans des méta-boîtes sur des types de publication personnalisés

J'essaie d'utiliser le plugin http://www.tinymce.com/ pour ajouter un tinymce à mes zones de texte dans les méta-boîtes que j'ai créées. J'ai cherché d'autres moyens sur Google et je ne peux pas le faire fonctionner ou je ne comprends pas le concept. SO c'est ce que je suis en train d'essayer -

J'ai essayé de créer un plugin pour ajouter le script à mon tableau de bord d'administration -

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')); 
}

Ensuite, je dois l'appeler comme ça -

<script>
        tinymce.init({selector:'textarea'});
</script>

Mais je ne suis pas sûr de savoir comment faire cela, étant donné que c’est pour le backend et non pour le front-end. Comment puis-je atteindre cet objectif?

MIS À JOUR

Ceci est mon code pour les boîtes à méta. http://Pastebin.com/WcC51uA9

J'ai essayé les méthodes suivantes (bien sûr, en le plaçant dans functions.php), et pour la plupart, elles ne fonctionnaient tout simplement pas ou étaient affichées en haut ou en bas de la page. Ils ne se sont pas montrés du tout sur la zone de texte. ---

http://Pastebin.com/Ct0mF6q7

http://Pastebin.com/R6t0ij6h

http://Pastebin.com/dcczcVby

http://Pastebin.com/yt1uRS5U

7
Rich

Voici un Pastebin avec votre code inclus.

Obtenez l'ancienne valeur du tinyMCE

$meta_biography = get_post_meta( $post->ID, 'meta_biography', true );

Appelez l'éditeur TinyMCE

wp_editor( $meta_biography, 'biography', array(
    'wpautop'       => true,
    'media_buttons' => false,
    'textarea_name' => 'meta_biography',
    'textarea_rows' => 10,
    'teeny'         => true
) );

Enregistrez la valeur de l'éditeur ou, si rien ne s'y trouve, supprimez les anciennes valeurs.

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' );
}

Si vous souhaitez ajouter plus d'options à l'éditeur - Vous pouvez afficher le Codex ou consultez ce joli/ Article WPTuts . Vous souhaitez utiliser la variable tinymce et lui transmettre un tableau de paramètres. Vous devrez peut-être supprimer le teeny => true dans la wp_editor() car le Codex indique qu'il n'utilisera que la configuration minimale de l'éditeur.

14
Howdy_McGee
// for pages use 'edit_page_form' as the first parameter. And see my comment below.
add_action( 'edit_form_advanced', 'my_meta_editor' ); 

function my_meta_editor() {

    // set 'your_meta_key' to the actual key
    $content = get_post_meta($post->ID, 'your_meta_key', true);

    // only low case [a-z], no hyphens and underscores
    $editor = 'mymetaeditor';

    // See my comment below
    $editor_settings = array();

    wp_editor( $content, $editor, $editor_settings);

}

Rechercher Actions administratives pour edit_form_after_title, edit_form_after_editor, edit_form_advanced si vous souhaitez modifier l'emplacement de la boîte méta.

Voir aussi wp_editor pour les paramètres de l'éditeur.

2
Max Yudin

Cette fonction a parfaitement fonctionné pour moi, il suffit d’ajouter à votre fichier functions.php et de rendre vos champs personnalisés textareas et vous avez terminé:

//add tinymce editor to custom fields
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 );

Tiré d'ici .

1
Salam El-Banna