Insérer l’éditeur de texte wordpress dans une metabox

Voici un exemple de shortcode utilisant l’éditeur de wordpress (wp_editor).

Dans cet exemple, je n’affiche la metabox que dans le modèle de page ‘infographie’, avec un éditeur de texte généré par la fonction wp_editor de wordpress.

//Metabox genes
function custom_left_meta_box() {
if( 'post.php' == basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']) && !isset($_GET['post_type']) ) {

// get post ID
$postid = $_GET['post'];

// check the template file name
if ( 'infographie.php' == get_page_template_slug($postid)) {
add_meta_box (
'custom-left',
__('Custom Left', 'custom-left') ,
'custom_left',
'post'
);
}
}
}
//Displaying the meta box
function custom_left($post) {
echo "<h3>Add Your Left text Here</h3>";
$content = get_post_meta($post->ID, 'custom_left', true);
//This function adds the WYSIWYG Editor
wp_editor (
$content ,
'custom_left',
array ( "media_buttons" => true )
);
}

//This function saves the data you put in the meta box
function custom_left_save_postdata($post_id) {
if( isset( $_POST['custom_left_nonce'] ) && isset( $_POST['page'] ) ) {
//Not save if the user hasn't submitted changes
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// Verifying whether input is coming from the proper form
if ( ! wp_verify_nonce ( $_POST['custom_left_nonce'] ) ) {
return;
}
// Making sure the user has permission
if( 'post' == $_POST['page'] ) {
if( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
}

if (!empty($_POST['custom_left'])) {
$data = $_POST['custom_left'];
update_post_meta($post_id, 'custom_left', $data);
}
}
add_action('save_post', 'custom_left_save_postdata');
add_action('admin_init', 'custom_left_meta_box');

Dans le backoffice, on retrouve bien l’éditeur dans la page d’édition du template de page.