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'] ?? $_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.

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.

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios