Es probable que en alguna ocasión estés haciendo un desarrollo a medida donde necesites crear una plantilla de página para una determinada sección o grupo de páginas. Me viene a la cabeza ejemplos que en alguna ocasión me han pedido, como páginas de listados de documentación. Estas páginas carecían de contenido, sólamente mostraban un listado de documentos descargables.
Para esto simplemente se habilitaban campos personalizados o custom fields, para que el usuario pudiera subir los documentos a la página correspondiente, como puede observarse en la imagen de cabecera.
Para este caso, no estamos utilizando el editor de texto ya que las páginas con plantilla Documentación no tienen contenido, son simplemente listados de archivos descargables. Como puede observarse el editor se come gran parte del espacio de trabajo, y puede dar lugar a confusión. Para estos casos puede resultar conveniente ocultarlo. Bastaría con incluir el siguiente código en el functions.php de nuestro tema:
<?php
function hide_editor() {
// Get the Post ID.
$post_id = $_GET['post'] ?? $_POST['post_ID'] ?: 0;
if( !isset( $post_id ) ) return;
// Get the name of the Page Template file.
$template_file = get_post_meta($post_id, '_wp_page_template', true);
if ($template_file == 'page-documents.php'){
remove_post_type_support('page', 'editor');
}
}
add_action( 'admin_init', 'hide_editor' );
Quedando nuestra página del siguiente modo, dejando el espacio de trabajo más limpio.
Este código sólo funciona cuando actualizas la página, es decir, no oculta el editor si simplemente añades una nueva página (las nuevas páginas por defecto tienen la plantilla predeterminada que si tiene editor) y seleccionas la plantilla desde el combo. Es necesario darle al botón de publicar/actualizar para que se oculte. Si quisieras hilar más fino, sería necesario añadir unas líneas de jQuery. En primer lugar en nuestro functions.php cargaríamos el script:
<?php
function my_admin_scripts($hook){
if ("post-new.php" == $hook) {
//Agregamos nuestro JS
wp_enqueue_script( 'my-admin-scripts', get_template_directory_uri() . '/js/admin-scripts.js', array('jquery'), '1.0' );
}
}
add_action('admin_enqueue_scripts', 'my_admin_scripts');
Y en nuestro fichero admin-scripts.js escribiríamos el siguiente código:
jQuery(document).ready(function ($) {
$('#page_template').change(function() {
if ($(this).val() == 'page-documents.php') {
$('#postdivrich').hide();
}else {
$('#postdivrich').show();
}
}).change();
});
¡Listo! De este modo al crear una página y seleccionar nuestra plantilla de documentos, se ocultará automáticamente el editor.