web-dev-qa-db-fra.com

Suppression de l'éditeur TinyMCE pour un modèle de page donné

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' );
1
Ian Muscat

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' );
1
Mark Kaplun

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' );
0
Poxtron