2010-08-16 13 views
16

Je crée une méta-box pour mon type de message personnalisé. Il y a plusieurs champs où j'aimerais utiliser l'éditeur wysiwyg plutôt que <textarea>. Est-il possible d'ajouter plusieurs éditeurs à une méta-boîte?Comment ajouter l'éditeur wysiwyg dans Wordpress meta box

J'apprécierais vraiment votre aide!

Merci beaucoup. Dasha

Répondre

0

d'abord installer le plugin TinyMCE Advanced. Second add "theEditor" classe à votre textarea comme ce

<textarea class="theEditor" name="custom_meta_box"></textarea> 

Thats it ;)

Nabeel

25

http://codex.wordpress.org/Function_Reference/wp_editor était de loin la méthode la plus simple que j'ai trouvé, construit dans Wordpress depuis 3.3 (donc mise à niveau ;-))

+0

N'oubliez pas de mettre l'argument 'id' à quelque chose de différent de la chaîne vide ou cela ne fonctionnera pas ... –

3

Mais vous devez remplacer la présentation avec la fonction nl2br() comme textarea dans les modèles personnalisés ont le problème de toogle JS, qui supprime tous vos <P> un nd <br/> tags et donc tous les sauts de ligne.

1

Vous pouvez utiliser l'éditeur de texte par défaut wordpress dans le METABOX en utilisant

add_action('edit_page_form', 'my_second_editor'); 
function my_second_editor() { 
    // get and set $content somehow... 
    wp_editor($content, 'mysecondeditor'); 
} 
27

est ici plein exemple de code:

add_action('add_meta_boxes', function() { 
    add_meta_box('html_myid_61_section', 'TITLEEEEE', 'my_output_function'); 
}); 

function my_output_function($post) { 
    wp_editor(htmlspecialchars_decode(get_post_meta($post, 'SMTH_METANAME' , true)), 'mettaabox_ID', $settings = array('textarea_name'=>'MyInputNAME')); 
} 

add_action('save_post', function($post_id) { 
    if (!empty($_POST['MyInputNAME'])) { 
     $datta=htmlspecialchars($_POST['MyInputNAME']); 
     update_post_meta($post_id, 'SMTH_METANAME', $datta); 
    } 
}); 

post-scriptum MUST-Recommandation de mon expérience:

Oubliez l'ajout de codes personnalisés, utilisez Advanced Custom Fields, c'est excellent et simplifiez-vous la vie.

+0

Mais pour les champs personnalisés avancés, vous devez payer 30,00 $ pour un champ répéteur. Je préfère faire les miens. – Matthew

+0

@Matthew Vous codez plutôt votre propre que de payer 30,00 $? Combien de temps pensez-vous qu'il vous faudra pour mettre en œuvre cela? –

+1

@DannyCoulombe Cela n'a pas pris trop de temps. C'était aussi une expérience d'apprentissage géniale! Si vous êtes curieux, vous pouvez le vérifier [ici] (https://github.com/MatthewKosloski/wp-metabox-constructor-class) – Matthew

1
// for custom post type 

function wo_second_editor($post) { 

    echo "<h3>Write here your text for the blue box on the right:</h3>"; 
    $content = get_post_meta($post->ID, 'wo_blue_box' , true) ; 
    wp_editor(htmlspecialchars_decode($content), 'wo_blue_box', array("media_buttons" => false)); 
} 

add_action('edit_form_advanced', 'wo_second_editor'); 


function wo_save_postdata($post_id, $post, $update) { 

    //... 

    if (!empty($_POST['wo_blue_box'])) { 
    $data=htmlspecialchars($_POST['wo_blue_box']); 
    update_post_meta($post_id, 'wo_blue_box', $data); 
    } 
} 

add_action('save_post', 'wo_save_postdata'); 


// Theme: 

<div class="blue"> 
    <?php 
    $content = get_post_meta(get_the_ID(), 'wo_blue_box' , true); 
    $content = htmlspecialchars_decode($content); 
    $content = wpautop($content); 
    echo $content; 
    ?> 
</div>