Como crear una página de administración con menú propio en PHP en WordPress

Contents

Introducción

Este tutorial explica, con todo lujo de detalles, cómo crear una página de administración con un menú propio en WordPress usando PHP. Verás dos enfoques: el método directo usando add_menu_page/add_submenu_page y la alternativa con la Settings API. También incluiré buenas prácticas de seguridad, carga de assets en el área de administración y ejemplos completos listos para usar como plugin.

Requisitos previos

  • Instalación de WordPress (local o remota) con permisos para activar plugins.
  • Conocimientos básicos de PHP y del ciclo de carga de WordPress.
  • Editor de código y acceso al directorio wp-content/plugins.

1. Crear un plugin base

El primer paso es crear un archivo PHP dentro de wp-content/plugins, por ejemplo: wp-content/plugins/mi-admin-page/mi-admin-page.php. Incluye la cabecera del plugin y un hook para añadir el menú.


2. Crear la función que renderiza la página (formulario y guardado)

En la callback mostraremos un formulario seguro usando nonce, validaremos y guardaremos con update_option. Nunca confíes en datos sin sanitizar.


    

3. Añadir la página de ajustes como submenu (opcional)

Ya hemos incluido add_submenu_page en el ejemplo anterior. La callback map_render_ajustes puede reutilizar el mismo patrón o usar la Settings API. Aquí un ejemplo simple de callback para el submenú.


    

4. Encolar scripts y estilos en el área de administración

Para cargar CSS o JS solo en tu página de administración usa admin_enqueue_scripts y comprueba el hook de la pantalla (hook_suffix). Así evitas cargar recursos innecesarios.

 admin_url( admin-ajax.php ),
        nonce   => wp_create_nonce( map_ajax_nonce ),
    ) )
}
/ assets/admin.css /
.wrap h1 { margin-bottom: 1em }

5. Seguridad: capacidades, nonces, sanitización y escape

  • Capacidades: Usa capabilities como manage_options o una capability personalizada. Evita usar administrator directamente.
  • Nonces: Usa wp_nonce_field y wp_verify_nonce para proteger envíos de formularios.
  • Sanitización: En el servidor usa sanitize_text_field, wp_kses_post, esc_url_raw, intval, etc., según el tipo de dato.
  • Escape en salida: Usa esc_html, esc_attr, esc_textarea, wp_kses para HTML permitido.

Ejemplo de sanitización/escape rápido

// Guardar
valor = isset( _POST[valor] ) ? sanitize_text_field( wp_unslash( _POST[valor] ) ) : 

// Mostrar
echo 

. esc_html( valor ) .

6. Alternativa: Usar la Settings API (recomendado para ajustes)

La Settings API ayuda a gestionar registros, secciones y campos con validación centralizada. A continuación un ejemplo mínimo de registro de settings y campos.

 . esc_html__( Ajustes generales de Mi Panel., mi-admin-page ) . 

} function map_field_titulo_cb() { options = get_option( map_options, array() ) titulo = isset( options[titulo] ) ? options[titulo] : echo } function map_sanitize_options( input ) { output = array() if ( isset( input[titulo] ) ) { output[titulo] = sanitize_text_field( input[titulo] ) } return output }

En la página usas settings_fields(map_options_group), do_settings_sections(mi-panel) y submit_button() para mostrar el formulario y que WordPress gestione el guardado automáticamente.

7. Consideraciones sobre roles y capacidades

  • Si necesitas que solo determinados roles accedan, crea una capability personalizada y asígnala a roles específicos con add_role / add_cap.
  • Evita usar capabilities demasiado permisivas. Para la mayoría de ajustes use manage_options.

8. Internacionalización y buenas prácticas

  • Envuelve cadenas con __(), _e(), esc_html__(), etc., y define Text Domain en la cabecera del plugin.
  • Documenta el código y separa assets en carpetas (assets/admin.css, assets/admin.js).
  • Utiliza prefijos únicos para funciones, hooks y opciones para evitar colisiones (ej. map_ para Mi Admin Page).

9. Ejemplo completo y mínimo de plugin (archivo único)

Este es un ejemplo compacto que incluye menú, guardado, nonce y encolado de assets.


    

class=regular-text>

10. Lista de comprobación antes de lanzar

  1. Verifica permisos y capacidades.
  2. Asegúrate de usar nonces en formularios y comprobación con wp_verify_nonce.
  3. Sanitiza y valida todos los datos entrantes antes de guardarlos.
  4. Escapa la salida con esc_html, esc_attr, esc_textarea o funciones apropiadas.
  5. Encola assets solo en las pantallas que necesites.
  6. Usa prefijos únicos en opciones y nombres de funciones para evitar conflictos.

Conclusión

Crear una página de administración con menú propio en WordPress es directo si sigues las APIs de WordPress: add_menu_page/add_submenu_page, nonces, sanitización y el encolado correcto de assets. Para opciones y formularios más complejos, la Settings API proporciona un marco estructurado. Usa los ejemplos anteriores como plantilla inicial y adáptalos a tus necesidades específicas.

Enlaces de referencia



Acepto donaciones de BAT's mediante el navegador Brave :)



Deja una respuesta

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