Añadir un widget al dashboard del admin
El dashboard de WordPress (la pantalla de inicio del admin) admite widgets personalizados que pueden mostrar información relevante del plugin o del sitio. Es una forma elegante de dar visibilidad a datos importantes sin obligar al usuario a navegar a otra pantalla.
Casos de uso: resumen de estadísticas del plugin, estado de sincronizaciones, accesos rápidos a las secciones más usadas, últimas entradas de un CPT propio, estado de integraciones externas.
<?php
add_action( 'wp_dashboard_setup', 'mi_widget_dashboard' );
function mi_widget_dashboard() {
wp_add_dashboard_widget(
'mi_widget',
'Resumen del Plugin',
'mi_widget_render'
);
}
function mi_widget_render() {
$total = wp_count_posts( 'proyecto' )->publish;
echo 'Proyectos publicados: ' . intval( $total ) . '
';
$ultima = get_option( 'mi_ultima_ejecucion', 'Nunca' );
echo 'Última sincronización: ' . esc_html( $ultima ) . '
';
echo 'Ver proyectos';
}
¿Qué hace cada parte?
- wp_dashboard_setup: hook que se dispara durante la carga del dashboard. Es el único momento en que
wp_add_dashboard_widget()funciona. - wp_add_dashboard_widget(): registra el widget. Parámetros: ID único, título visible en el widget, función de renderizado. Opcionalmente acepta un cuarto parámetro para una función de configuración.
- wp_count_posts(): devuelve un objeto con el conteo de posts por estado (
publish,draft,trash, etc.) para el tipo de contenido indicado. - intval(): fuerza el conteo a entero antes de mostrarlo — previene mostrar valores inesperados si la propiedad no existiera.
- get_option( …, ‘Nunca’ ): recupera la opción con un valor por defecto legible en caso de que nunca se haya ejecutado la sincronización.
- admin_url(): genera URLs del panel de administración de forma portable, sin depender del dominio o la instalación en subdirectorio.
