テーマ内の特定のページテンプレート(私の場合は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' );
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' );
これは私のために働いた:
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' );