Comment masquer l'éditeur de page (éditeur WYSIWYG) si la page actuelle est définie sur un certain modèle.
J'ai déjà le code suivant pour ajouter des méta-boîtes personnalisées lorsque certains modèles sont choisis:
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');
}
}
Ce que j'aimerais par exemple, c'est que l'éditeur soit supprimé si $template_file == 'template-page-2quotes.php'
Modifier (code de travail):
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>";
}
add_action( 'init', 'remove_editor_init' );
function remove_editor_init() {
// If not in the admin, return.
if ( ! is_admin() ) {
return;
}
// Get the post ID on edit post with filter_input super global inspection.
$current_post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
// Get the post ID on update post with filter_input super global inspection.
$update_post_id = filter_input( INPUT_POST, 'post_ID', FILTER_SANITIZE_NUMBER_INT );
// Check to see if the post ID is set, else return.
if ( isset( $current_post_id ) ) {
$post_id = absint( $current_post_id );
} else if ( isset( $update_post_id ) ) {
$post_id = absint( $update_post_id );
} else {
return;
}
// Don't do anything unless there is a post_id.
if ( isset( $post_id ) ) {
// Get the template of the current post.
$template_file = get_post_meta( $post_id, '_wp_page_template', true );
// Example of removing page editor for page-your-template.php template.
if ( 'page-your-template.php' === $template_file ) {
remove_post_type_support( 'page', 'editor' );
// Other features can also be removed in addition to the editor. See: https://codex.wordpress.org/Function_Reference/remove_post_type_support.
}
}
}
add_action('init', 'remove_editor_init');
function remove_editor_init() {
remove_post_type_support('page', 'editor');
}
Vous pouvez insérer cette information dans votre logique existante pour détecter le modèle de page actuel, de sorte que vous ne désactiviez l'éditeur que pour des pages spécifiques.
Voir: http://codex.wordpress.org/Function_Reference/remove_post_type_support
vous pouvez ajouter une simple règle CSS avec display:none;
dans votre code de fonction metabox:
if ($template_file == 'template-page-2quotes.php') {
echo '<style>#postdivrich{display:none;}</style>';
}
En plus des formidables réponses fournies uniquement par WP, les utilisateurs du plug-in Advanced Custom Fields peuvent simplement ajouter une seule directive à leurs définitions de champ pour supprimer l'éditeur des pages associées:
$args = array(); // Already defined with many elements
$args['hide_on_screen'] = array('the_content'); // Remove the Editor from associated Pages
acf_add_local_field_group($args); // Already defined for use with extant $args
Comme cela semble être un plugin extrêmement répandu dans les WP magasins avec lesquels j'ai travaillé, cette méthode doit être mentionnée.