How do I hide the page editor (WYSIWYG editor) if the current page is set to a certain template.
I have the following code already to add in custom meta boxes when certain templates are chosen:
add_action('admin_init','my_meta_init');
function my_meta_init()
{
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
$template_file = get_post_meta($post_id, '_wp_page_template', TRUE);
$savemeta = true;
if ($template_file == 'template-page-2quotes.php') {
add_meta_box('main_quote_meta-meta', 'Top Quote', 'main_quote_meta', 'page', 'side', 'low');
add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
} elseif ($template_file == 'template-page-1quote.php') {
add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
} elseif ($template_file == 'template-page-factsnfigures.php') {
add_meta_box('facts_n_figures-meta', 'Amount Raised', 'facts_n_figures', 'page', 'normal', 'low');
} elseif ($template_file == 'template-page-fundraising.php') {
add_meta_box('fundraising_ideas-meta', 'Fundraising Ideas', 'fundraising_ideas', 'page', 'side', 'low');
} else {
$savemeta = false;
}
if($savemeta == true) {
add_action('save_post','my_meta_save');
}
}
What I would like for example is that the editor is removed if $template_file == 'template-page-2quotes.php'
Edit (Working Code):
add_action('admin_init','my_meta_init');
function my_meta_init()
{
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
$template_file = get_post_meta($post_id, '_wp_page_template', TRUE);
$savemeta = true;
$hideeditor = false;
if ($template_file == 'template-page-2quotes.php') {
add_meta_box('main_quote_meta-meta', 'Top Quote', 'main_quote_meta', 'page', 'side', 'low');
add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
} elseif ($template_file == 'template-page-1quote.php') {
add_meta_box('sub_quote_meta-meta', 'Right Hand Side Quote', 'sub_quote_meta', 'page', 'normal', 'low');
} elseif ($template_file == 'template-page-factsnfigures.php') {
add_meta_box('facts_n_figures-meta', 'Amount Raised', 'facts_n_figures', 'page', 'normal', 'low');
} elseif ($template_file == 'template-page-fundraising.php') {
add_meta_box('fundraising_ideas-meta', 'Fundraising Ideas', 'fundraising_ideas', 'page', 'side', 'low');
} elseif($template_file == 'template-page-news.php') {
$hideeditor = true;
$savemeta = false;
} else {
$savemeta = false;
}
if($savemeta == true) {
add_action('save_post','my_meta_save');
}
if($hideeditor == true) {
add_action('admin_print_styles', 'admin_no_editor_style');
}
}
function admin_no_editor_style() {
echo "<style>#postdivrich{display:none;}</style>";
}
You can wrap this inside your existing logic for detecting the current page template, so you only disable the editor for specific pages.
See: http://codex.wordpress.org/Function_Reference/remove_post_type_support
you can add a simple CSS rule with
display:none;
in your metabox function code:In addition to the terrific WP-only answers given, users of the Advanced Custom Fields plugin can simply add a single directive to their field definitions the remove the Editor from associated pages:
As this seems to be an extraordinarily common plugin at the WP shops that I’ve worked with, this method should be mentioned.