Wordpress

Panel de administración de WordPress: 9 códigos para mejorarlo

Panel de administración de WordPress

El panel de administración de WordPress puede adaptarse bastante más de lo que parece. Podemos reorganizar menús, eliminar elementos que no necesitamos, añadir accesos rápidos, personalizar la pantalla de acceso o incorporar información útil para las personas que gestionan la web.

En este artículo veremos 9 ejemplos de código para personalizar el panel de administración de WordPress utilizando funciones y hooks del propio sistema.

Son ejemplos especialmente útiles cuando desarrollamos una web para un cliente o queremos simplificar el escritorio para que cada usuario encuentre con mayor facilidad las funciones que realmente necesita.

Si trabajas habitualmente con WordPress, este tipo de personalizaciones también permite convertir el panel estándar en una interfaz mucho más adaptada al proyecto.

Antes de modificar el panel de WordPress

Muchos ejemplos de personalización de WordPress se añaden directamente al archivo functions.php del tema. Puede funcionar, pero no siempre es la mejor opción.

Si la funcionalidad debe mantenerse aunque cambiemos de tema, es preferible colocarla en un pequeño plugin propio o en una solución específica para el proyecto.

Además, antes de añadir código en una web en producción conviene probarlo en un entorno controlado. Una opción interesante para pequeñas pruebas es WordPress Playground, que permite experimentar con WordPress sin modificar directamente la web real.

1. Añadir una página con todas las opciones de WordPress

WordPress dispone de una página interna llamada options.php donde pueden visualizarse numerosas opciones almacenadas por el sistema y por algunos plugins.

Podemos añadir un acceso dentro del menú de Ajustes para usuarios con permisos suficientes:

function hc_add_all_settings_page() {
    add_options_page(
        'Todas las opciones',
        'Todas las opciones',
        'manage_options',
        'options.php'
    );
}

add_action( 'admin_menu', 'hc_add_all_settings_page' );

Importante: esta pantalla contiene configuraciones internas de WordPress. No es una página que debamos ofrecer a usuarios que no sepan exactamente qué están modificando.

2. Ocultar avisos de actualización a usuarios que no pueden actualizar

En determinados proyectos podemos querer que los usuarios sin permisos para administrar actualizaciones no vean determinados avisos relacionados con nuevas versiones.

Podemos controlar la visualización del mensaje de actualización del núcleo según las capacidades del usuario:

function hc_hide_update_notice_for_non_admins() {
    if ( ! current_user_can( 'update_core' ) ) {
        remove_action( 'admin_notices', 'update_nag', 3 );
    }
}

add_action( 'admin_head', 'hc_hide_update_notice_for_non_admins' );

Esto afecta a la visualización del aviso, no desactiva las comprobaciones de actualizaciones de WordPress.

Es una diferencia importante: ocultar información que un usuario no necesita ver no debería implicar impedir que WordPress compruebe si existen actualizaciones disponibles.

3. Personalizar el logotipo de la pantalla de acceso

La pantalla de acceso puede adaptarse a la identidad visual del proyecto utilizando el logotipo configurado en WordPress.

function hc_custom_login_logo() {

    $custom_logo_id = get_theme_mod( 'custom_logo' );

    if ( ! $custom_logo_id ) {
        return;
    }

    $logo_url = wp_get_attachment_image_url( $custom_logo_id, 'full' );

    if ( ! $logo_url ) {
        return;
    }

    ?>
    <style>
        .login h1 a {
            background-image: url('<?php echo esc_url( $logo_url ); ?>');
            background-size: contain;
            background-position: center;
            background-repeat: no-repeat;
            width: 100%;
            max-width: 320px;
            height: 100px;
        }
    </style>
    <?php
}

add_action( 'login_enqueue_scripts', 'hc_custom_login_logo' );

function hc_login_logo_url() {
    return home_url( '/' );
}

add_filter( 'login_headerurl', 'hc_login_logo_url' );

function hc_login_logo_text() {
    return get_bloginfo( 'name' );
}

add_filter( 'login_headertext', 'hc_login_logo_text' );

De esta forma podemos utilizar el logotipo del propio sitio y hacer que, al pulsarlo, el usuario vuelva a la página principal.

4. Personalizar el orden del menú de administración

Cuando una web incorpora diferentes tipos de contenido, plugins y herramientas, el menú lateral puede terminar siendo bastante extenso.

Podemos definir un orden personalizado para colocar primero las secciones que más utiliza el equipo.

function hc_custom_menu_order( $menu_order ) {

    if ( ! $menu_order ) {
        return true;
    }

    return array(
        'index.php',
        'edit.php',
        'edit.php?post_type=page',
        'upload.php',
        'edit.php?post_type=services',
        'edit-comments.php',
        'themes.php',
        'plugins.php',
        'users.php',
        'tools.php',
        'options-general.php',
    );
}

add_filter( 'custom_menu_order', 'hc_custom_menu_order' );
add_filter( 'menu_order', 'hc_custom_menu_order' );

Los identificadores deben adaptarse a los tipos de contenido y secciones que existan realmente en cada instalación.

Esta personalización resulta especialmente útil en proyectos donde WordPress funciona como un CMS para gestionar diferentes áreas del negocio y no simplemente como un blog.

5. Eliminar widgets innecesarios del escritorio

No todos los usuarios necesitan ver todos los widgets disponibles en el escritorio de WordPress.

Podemos retirar algunos de ellos y dejar una pantalla inicial más sencilla:

function hc_remove_dashboard_widgets() {

    remove_meta_box(
        'dashboard_activity',
        'dashboard',
        'normal'
    );

    remove_meta_box(
        'dashboard_quick_press',
        'dashboard',
        'side'
    );

    remove_meta_box(
        'dashboard_primary',
        'dashboard',
        'side'
    );

    remove_meta_box(
        'dashboard_site_health',
        'dashboard',
        'normal'
    );
}

add_action(
    'wp_dashboard_setup',
    'hc_remove_dashboard_widgets'
);

No es necesario eliminar todos estos elementos. La idea es adaptar el escritorio a cada proyecto y conservar aquello que realmente aporta información útil.

Por ejemplo, el estado de salud del sitio puede ser relevante para un administrador técnico y no tener ninguna utilidad para un usuario cuyo trabajo consiste únicamente en gestionar contenidos.

6. Personalizar el texto del pie del administrador

También podemos modificar el texto que aparece en el pie del panel de administración.

function hc_custom_admin_footer( $text ) {

    return sprintf(
        'Sitio desarrollado para %s',
        esc_html( get_bloginfo( 'name' ) )
    );
}

add_filter(
    'admin_footer_text',
    'hc_custom_admin_footer'
);

Podemos utilizar este espacio para mostrar información útil sobre el proyecto, soporte, mantenimiento o cualquier otra referencia interna que tenga sentido para las personas que administran la web.

7. Añadir CSS personalizado al panel de administración

WordPress también permite cargar estilos propios dentro del área de administración.

Para cambios pequeños podemos utilizar el hook admin_head:

function hc_custom_admin_styles() {
    ?>
    <style>
        .hc-admin-highlight {
            padding: 12px;
            border: 1px solid currentColor;
            border-radius: 4px;
        }
    </style>
    <?php
}

add_action(
    'admin_head',
    'hc_custom_admin_styles'
);

Para una personalización más amplia es preferible cargar una hoja de estilos propia mediante admin_enqueue_scripts en lugar de introducir grandes cantidades de CSS directamente en el HTML del administrador.

También debemos evitar depender innecesariamente de selectores internos muy específicos de WordPress, ya que la interfaz puede cambiar entre versiones.

8. Crear un widget propio en el escritorio de WordPress

En lugar de calcular en cada carga el número de palabras de todas las entradas de la web, podemos aprovechar el escritorio para mostrar información realmente útil para el proyecto.

Por ejemplo, podemos crear nuestro propio widget con accesos rápidos:

function hc_register_dashboard_widget() {

    wp_add_dashboard_widget(
        'hc_dashboard_widget',
        'Accesos rápidos',
        'hc_dashboard_widget_content'
    );
}

add_action(
    'wp_dashboard_setup',
    'hc_register_dashboard_widget'
);

function hc_dashboard_widget_content() {

    $new_post_url = admin_url( 'post-new.php' );
    $pages_url    = admin_url( 'edit.php?post_type=page' );
    $media_url    = admin_url( 'upload.php' );

    echo '<ul>';

    echo '<li><a href="' .
        esc_url( $new_post_url ) .
        '">Crear una entrada</a></li>';

    echo '<li><a href="' .
        esc_url( $pages_url ) .
        '">Gestionar páginas</a></li>';

    echo '<li><a href="' .
        esc_url( $media_url ) .
        '">Biblioteca de medios</a></li>';

    echo '</ul>';
}

En un desarrollo a medida este widget podría mostrar accesos específicos del negocio, documentación interna, información de soporte o indicadores procedentes de otras funcionalidades.

9. Añadir enlaces a la barra de administración

La barra superior de WordPress puede utilizarse para ofrecer accesos directos a páginas que utilizamos frecuentemente.

Por ejemplo, podemos añadir un acceso directo a la biblioteca de medios:

function hc_add_admin_bar_link( $wp_admin_bar ) {

    $wp_admin_bar->add_node(
        array(
            'id'     => 'hc_media_library',
            'title'  => 'Biblioteca de medios',
            'href'   => admin_url( 'upload.php' ),
            'parent' => 'new-content',
        )
    );
}

add_action(
    'admin_bar_menu',
    'hc_add_admin_bar_link',
    100
);

También podemos crear elementos de primer nivel o añadir enlaces a otras secciones del administrador. La utilidad depende de cómo se trabaje en cada proyecto.

No todos los usuarios necesitan el mismo WordPress

Personalizar el panel de administración no consiste únicamente en cambiar colores o colocar un logotipo.

En proyectos con diferentes perfiles de usuario podemos utilizar capacidades, roles y condiciones para mostrar a cada persona únicamente las herramientas que necesita.

Un editor puede necesitar acceso a entradas y páginas. Una persona responsable de una tienda puede trabajar principalmente con WooCommerce. Un administrador técnico puede necesitar plugins, herramientas, diagnósticos y configuraciones que no deberían estar disponibles para el resto.

Cuanto más específico sea el proyecto, más sentido puede tener adaptar WordPress a su flujo de trabajo en lugar de obligar a todos los usuarios a trabajar con la interfaz estándar.

¿functions.php o plugin propio?

Para una prueba rápida, algunos de estos ejemplos pueden colocarse en el functions.php de un tema hijo.

Sin embargo, si estamos creando funcionalidades administrativas que pertenecen al proyecto y no al diseño visual del tema, normalmente prefiero separarlas en un plugin propio.

De esta forma la funcionalidad continúa disponible aunque cambiemos de tema y resulta más sencillo mantener, versionar o ampliar el código.

En proyectos de desarrollo web a medida, esta separación entre presentación y funcionalidad resulta especialmente importante cuando WordPress empieza a funcionar como una herramienta interna además de como gestor de contenidos.

Conclusión

WordPress ofrece suficientes hooks y APIs para adaptar gran parte de su área de administración sin modificar los archivos del núcleo.

Podemos reorganizar el menú, simplificar el escritorio, crear accesos rápidos, personalizar la pantalla de login o incorporar herramientas específicas para las personas que gestionan la web.

La clave no está en añadir modificaciones porque sean posibles, sino en utilizar aquellas que realmente simplifican el trabajo, reducen errores y adaptan WordPress a las necesidades del proyecto.

Escrito por

Hugo Calixto

¡Hola! Soy Hugo Calixto, Desarrollador Web y Experto en SEO con más de 15 años de experiencia. Mi Enfoque: Desarrollo Web de Páginas y Tiendas Online con CMS WordPress o CMS Personalizado; Consultoría SEO orientada a resultados; Alojamiento WEB de alta calidad y seguridad. Ser polivalente es necesario en los tiempos actuales. Aporto experiencia en diversas áreas para ofrecer soluciones económicas y eficaces a mis clientes.