と前の同一の質問 に与えられた答えは残念ながら私のWP installに取り組んでいません。
私は推奨する関数のバージョンを使用しています there 。
function nim_hide_editor() {
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
$template = get_post_meta( $post_ID , '_wp_page_template', true );
if($template == 'portfolio.php'){
/*echo "<style>#postdivrich{display:none;}</style>";*/
remove_post_type_support( 'page', 'editor' );
}
}
add_action('admin_init', 'nim_hide_editor');
私はコメントアウトされた行を含めて、代替回答に記載されているスタイルタグをエコーする手法を試したことを示しましたが、ページテンプレートで選択するときはどちらも機能しませんでした。しかしながら...
2つのことが矛盾しているように見えます。
私はCPanelを通して私のSQLデータベースを調べました、そして、 "portfolio.php"は実際に私がこれを使用しようとしているページのためにpost_metaに格納された値です。
$ post_IDでページを選択し、remove_post_type_support
を使用すると、が機能します。
if($post_ID == '13'){
remove_post_type_support( 'page', 'editor' );
}
私は少し夢中になっています - 私はすべてをトリプルチェックしたようです。そのテンプレートを使用するpost_IDの配列でそのエディタを隠すことはできますが、そのテンプレートを使用する将来のページでは機能しません。
以下はTwentyTwelveでテストして私のために働きます。
load-{$pagenow}
の代わりにadmin_init
を使用すると、グローバルな$pagenow
のチェックを回避できます。詳細についてはコメントを参照してください。
// Run only when editing a page
// For new pages load-page-new.php should be used
// See: http://core.trac.wordpress.org/browser/tags/3.5.1/wp-admin/admin.php#L217
add_action( 'load-page.php', 'hide_editor_wpse_88886' );
function hide_editor_wpse_88886()
{
// Not really necessary, but just in case
if( !isset( $_GET['post'] ) )
return;
$template = get_post_meta( $_GET['post'] , '_wp_page_template', true );
if( 'page-templates/front-page.php' == $template )
{
remove_post_type_support( 'page', 'editor' );
}
}