Aller au contenu principal
Version: 26.0.9.0

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