正在删除给定页面模板的TinyMCE编辑器

时间:2013-02-10 作者:Ian Muscat

我在寻找一种方法来删除主题中特定页面模板的TinyMCE编辑器(在我的例子中是page home.php)。我发现下面的代码很有效,但是,我想知道是否可以用一种更好/更整洁的方式来完成,也许可以使用WordPress的一些内置函数来查找页面的ID。。。

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\' );

2 个回复
SO网友:Mark Kaplun

你可以试着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\' );

SO网友:Miguel

这对我很有用:

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\' );

结束