Je cherchais un moyen de supprimer l'éditeur TinyMCE pour un modèle de page spécifique dans un thème (dans mon cas, il s'agit de page-home.php). J'ai trouvé le code suivant, qui fonctionne, cependant, je me demandais si cela pouvait être accompli de manière plus simple/ordonnée, en utilisant peut-être certaines des fonctions intégrées de WordPress pour trouver l'ID de la page ...
function hide_editor() {
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
if( !isset( $post_id ) ) return;
$template_file = get_post_meta($post_id, '_wp_page_template', true);
if($template_file == 'page-home.php'){ // template name here
remove_post_type_support('page', 'editor');
}
}
add_action( 'admin_init', 'hide_editor' );
Vous pouvez essayer de vous accrocher à load-page
au lieu de admin_init
. Il est censé être appelé uniquement lorsqu'une page est en cours d'édition. Vous devriez alors pouvoir utiliser la variable globale $post
.
function hide_editor() {
global $post;
$template_file = get_post_meta($post->ID, '_wp_page_template', true);
if($template_file == 'page-home.php'){ // template name here
remove_post_type_support('page', 'editor');
}
}
add_action( 'load-page', 'hide_editor' );
Cela a fonctionné pour moi:
function hide_editor() {
if(isset($_REQUEST['post'])){
$post_id = $_REQUEST['post'];
$template_file = get_post_meta($post_id, '_wp_page_template', true);
if($template_file == 'page-home.php'){ // template name here
remove_post_type_support('page', 'editor');
}
}
}
add_action( 'load-post.php', 'hide_editor' );