Un client de gestion locative nous a posé la question un lundi matin, en visio, avec un ton légèrement gêné : « À quoi sert ce widget WordPress Events and News ? Je ne comprends même pas ce que ça fait sur ma page d’accueil. » La réponse honnête est qu’il ne sert à rien pour lui, et qu’il en va de même pour la plupart des widgets par défaut du tableau de bord.
Le tableau de bord de l’administration WordPress est pensé pour convenir à tout le monde, ce qui revient souvent à ne convenir vraiment à personne. Pour un client qui se connecte une fois par semaine, mieux vaut un écran d’accueil qui répond directement à ses questions : combien de commandes en attente, combien de messages de contact non traités, quel est le dernier article publié.
Retirer les widgets natifs inutiles
La fonction remove_meta_box() s’utilise aussi sur l’écran dashboard, avec le contexte adapté. Elle doit être appelée après que les widgets ont été enregistrés, typiquement via l’action wp_dashboard_setup avec une priorité tardive :
function lg_retirer_widgets_dashboard() {
remove_meta_box( 'dashboard_primary', 'dashboard', 'normal' ); // Actus WordPress
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); // Rédaction rapide
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' ); // Activité récente
remove_meta_box( 'dashboard_site_health', 'dashboard', 'normal' ); // Santé du site
remove_meta_box( 'dashboard_php_nag', 'dashboard', 'normal' ); // Alerte version PHP
}
add_action( 'wp_dashboard_setup', 'lg_retirer_widgets_dashboard', 20 );
La priorité 20 garantit que l’appel intervient après l’enregistrement standard, qui se fait généralement à la priorité 10. Sans cela, le widget réapparaît simplement au chargement suivant.
Ajouter un résumé personnalisé

La fonction wp_add_dashboard_widget() accepte un identifiant, un titre et une fonction de rendu. Pour notre client de gestion locative, un widget affichant le nombre de demandes de contact non lues et la dernière annonce publiée remplace avantageusement les widgets retirés :
function lg_widget_resume_client() {
$demandes_en_attente = get_posts( array(
'post_type' => 'demande_contact',
'post_status' => 'non_lu',
'numberposts' => -1,
'fields' => 'ids',
) );
$derniere_annonce = get_posts( array(
'post_type' => 'annonce',
'numberposts' => 1,
) );
echo '<p><strong>' . count( $demandes_en_attente ) . '</strong> demande(s) de contact en attente.</p>';
if ( ! empty( $derniere_annonce ) ) {
echo '<p>Dernière annonce publiée : <a href="' . esc_url( get_edit_post_link( $derniere_annonce[0]->ID ) ) . '">' . esc_html( $derniere_annonce[0]->post_title ) . '</a></p>';
}
}
function lg_ajouter_widget_resume() {
wp_add_dashboard_widget(
'lg_resume_client',
'En un coup d\'œil',
'lg_widget_resume_client'
);
}
add_action( 'wp_dashboard_setup', 'lg_ajouter_widget_resume' );
Remonter le widget en haut de l’écran
Par défaut, un nouveau widget est ajouté en bas de la colonne normal. Pour le faire apparaître en premier, il faut manipuler directement la variable globale $wp_meta_boxes après son enregistrement :
function lg_remonter_widget_resume() {
global $wp_meta_boxes;
$widget = $wp_meta_boxes['dashboard']['normal']['core']['lg_resume_client'];
unset( $wp_meta_boxes['dashboard']['normal']['core']['lg_resume_client'] );
$wp_meta_boxes['dashboard']['normal']['core'] = array( 'lg_resume_client' => $widget )
+ $wp_meta_boxes['dashboard']['normal']['core'];
}
add_action( 'wp_dashboard_setup', 'lg_remonter_widget_resume', 30 );
Cette manipulation reste peu élégante, mais elle est documentée par la communauté et fonctionne de manière fiable depuis de nombreuses versions.
Ce qu’on garde, ce qu’on retire
- À retirer presque systématiquement : le flux d’actualités WordPress, sans intérêt pour un client final.
- À garder selon les profils : le widget « Activité récente », utile si plusieurs rédacteurs publient sur le site.
- À toujours garder : le widget « Santé du site », qui alerte sur des problèmes réels de configuration.
En résumé
Un tableau de bord sur mesure ne demande que deux briques : remove_meta_box() pour faire le ménage, wp_add_dashboard_widget() pour apporter de la valeur immédiate. Sur un projet où l’administrateur se connecte rarement, ces quelques lignes changent réellement la perception qu’il a de son site.