Widget
L'attribut Widget permet d'ajouter des widgets personnalisés dans le tableau de bord WordPress, offrant une intégration fluide avec le système de templates Twig d'Elementum.
Utilisation de base
app/Controllers/DashboardController.php
use Elementum\Attributes\Widget; class DashboardController extends Controller { #[Widget( id: 'dashboard_quick_links', title: 'Liens rapides', context: 'side', priority: 'high' )] public function quickLinksWidget() { return $this->render('@theme/widgets/quick-links.html.twig', [ 'title' => 'Accès rapide', 'links' => [ ['url' => '/wp-admin/post-new.php', 'label' => 'Nouvel article'], ['url' => '/wp-admin/upload.php', 'label' => 'Médias'], ['url' => '/wp-admin/themes.php', 'label' => 'Apparence'] ] ]); } }
Paramètres
Paramètres obligatoires
id
- Type :
string - Description : Identifiant unique du widget
- Exemple :
'dashboard_stats','recent_comments' - Remarque : Doit être unique pour éviter les conflits
title
- Type :
string - Description : Titre affiché dans l'en-tête du widget
- Exemple :
'Statistiques','Derniers commentaires'
Paramètres optionnels
capabilities
- Type :
array - Défaut :
[] - Description : Contrôle l'accès au widget en fonction des capacités utilisateur
- Valeurs courantes :
'manage_options': Administrateurs'edit_posts': Éditeurs et administrateurs'read': Tous les utilisateurs connectés
- Exemple :
['manage_options', 'edit_theme_options']
context
- Type :
string - Défaut :
'normal' - Description : Position du widget dans le tableau de bord
- Valeurs possibles :
'normal': Colonne principale (largeur complète)'side': Barre latérale (colonne étroite)'column3': Troisième colonne (si disponible)'column4': Quatrième colonne (si disponible)
priority
- Type :
string - Défaut :
'core' - Description : Contrôle l'ordre d'affichage des widgets
- Valeurs possibles :
'high': En haut de la colonne'core': Position par défaut'default': Après les widgets par défaut'low': En bas de la colonne
Exemples avancés
Widget avec restrictions d'accès
#[Widget( id: 'admin_stats', title: 'Statistiques avancées', capabilities: ['manage_options'], // Uniquement pour les administrateurs context: 'normal', priority: 'high' )] public function adminStatsWidget() { $stats = $this->getAdminStats(); return $this->render('@theme/widgets/admin-stats.html.twig', [ 'stats' => $stats, 'lastUpdated' => new \DateTime() ]); }
Bonnes pratiques
- Nommage : Utilisez des préfixes uniques pour éviter les conflits
- Sécurité : Vérifiez toujours les capacités utilisateur
- Performance : Limitez les requêtes dans les widgets du tableau de bord
- Responsive : Assurez-vous que vos widgets s'affichent correctement sur tous les appareils
- Documentation : Commentez les widgets complexes ou nécessitant une configuration spécifique
Remarques
Les widgets sont chargés uniquement dans l'administration WordPress