Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
plantilla con editor

Ocultar el editor WYSIWYG en función del template seleccionado

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'] ? $_GET['post'] : $_POST['post_ID'] ; 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.

plantilla sin editor

 

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.

Puede que también te interese

Cómo evitar la actualización de plugins concretos en WordPress
Cómo evitar la actualización de plugins concretos en WordPress
Si has hecho desarrollos a medida en WordPress seguramente te has encontrado en alguna ocasión con la siguiente situación: Te han pedido un desarrollo en…
Añade una clase CSS personalizada a tus meta boxes
Añade una clase CSS personalizada a tus meta boxes
En esta entrada vamos a ver como añadir una clase CSS a los meta boxes de WordPress. Utilizamos los meta boxes en WordPress para agrupar…
Cómo corregir los errores de datos estructurados de Google Search Console en WordPress
Cómo corregir los errores de datos estructurados de Google Search Console en WordPress
El otro día vi que tenía una serie de errores en el apartado Aspecto de la búsqueda => Datos estructurados de la Google Search Console:…
Mejora la puntuación de Google PageSpeed Insights: Especificar caché de navegador
Mejora la puntuación de Google PageSpeed Insights: Especificar caché de navegador
1. Optimizar imágenes 2. Minificar CSS y JS 3. Especificar caché de navegador 4. Habilita la compresión 5. Reducir el tiempo de respuesta del servidor…