web-dev-qa-db-ja.com

特定のページテンプレートのTinyMCEエディタを削除する

テーマ内の特定のページテンプレート(私の場合はpage-home.php)用のTinyMCEエディタを削除する方法を探していました。私は以下のコードを見つけました、それはうまくいきます、しかし、これがより良い/より良い方法で、おそらくページのIDを見つけるためにWordPressの組み込み関数のいくつかを使って達成できるかどうか疑問に思いました...

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

load-pageの代わりにadmin_initフックでフックしようとすることができます。それはページが編集されているときにだけ呼ばれることになっていて、それからあなたはグローバルな$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

これは私のために働いた:

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