Le WordPress d'aujourd'hui, décodé pour les développeurs

Astuces

Compter automatiquement les élèves inscrits par classe dans l’administration

Ajouter une colonne calculée affichant le nombre d'inscriptions restantes par classe dans la liste d'administration, pour un établissement scolaire.

Par WordPress Développement • 8 juillet 2020 • 4 min de lecture • Aucun commentaire
Compter automatiquement les élèves inscrits par classe dans l'administration

Vingt-quatre classes, une direction d’établissement scolaire, et une seule question récurrente : combien de places reste-t-il dans telle ou telle classe avant la rentrée ? Auparavant, la secrétaire ouvrait chaque fiche classe une par une pour compter manuellement les inscriptions liées, ce qui prenait un temps disproportionné chaque semaine de la période d’inscription.

La solution retenue ajoute une colonne calculée directement dans la liste d’administration des classes, affichant le nombre d’élèves déjà inscrits en face de la capacité maximale. Un seul coup d’œil sur l’écran de liste suffit désormais à repérer les classes presque complètes.

Structurer la relation entre élève et classe

Sur ce site, chaque élève est enregistré comme un article personnalisé de type eleve, relié à sa classe via un champ personnalisé stockant l’identifiant de l’article classe correspondant. Cette relation simple, sans table intermédiaire, suffit pour un établissement de cette taille.

  1. Le type classe possède un champ personnalisé capacite_max, saisi manuellement par la direction.
  2. Le type eleve possède un champ personnalisé classe_id, renseigné à l’inscription.
  3. La colonne calculée additionne, pour chaque classe affichée, le nombre d’élèves dont classe_id correspond.

Ajouter la colonne à la liste d’administration

Le filtre manage_classe_posts_columns permet d’insérer une nouvelle colonne dans la liste, tandis que l’action manage_classe_posts_custom_column se charge d’y afficher la valeur calculée pour chaque ligne.

add_filter( 'manage_classe_posts_columns', 'ecole_ajouter_colonne_effectif' );

function ecole_ajouter_colonne_effectif( $colonnes ) {
    $colonnes['effectif'] = 'Inscriptions';
    return $colonnes;
}

add_action( 'manage_classe_posts_custom_column', 'ecole_afficher_colonne_effectif', 10, 2 );

function ecole_afficher_colonne_effectif( $colonne, $post_id ) {
    if ( 'effectif' !== $colonne ) {
        return;
    }
    $capacite = (int) get_post_meta( $post_id, 'capacite_max', true );
    $inscrits = ecole_compter_eleves_classe( $post_id );
    echo esc_html( $inscrits . ' / ' . $capacite );
}
L'essentiel à retenir : Une colonne calculée évite d'ouvrir chaque fiche classe une à une ; manage_posts_columns et manage_posts_custom_column suffisent ; Le calcul repose sur une simple comptabilisation de wp_count_posts filtrée

Calculer le nombre d’inscrits par classe

La fonction de comptage utilise une WP_Query avec meta_query pour ne récupérer que les identifiants d’élèves rattachés à une classe donnée, et se contente de fields => 'ids' pour éviter de charger les objets complets, ce qui reste rapide même avec plusieurs centaines d’élèves.

function ecole_compter_eleves_classe( $classe_id ) {
    $requete = new WP_Query( array(
        'post_type'      => 'eleve',
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'meta_query'     => array(
            array(
                'key'   => 'classe_id',
                'value' => $classe_id,
            ),
        ),
    ) );
    return count( $requete->posts );
}

Pour un établissement de taille plus importante, cette requête gagnerait à être mise en cache avec un transient, rafraîchi seulement lors de l’ajout ou de la suppression d’un élève, plutôt que recalculé à chaque affichage de la liste.

Mettre en valeur les classes presque complètes

Un simple nombre ne suffisait pas toujours à attirer l’attention de la secrétaire pressée entre deux appels téléphoniques. Une mise en forme conditionnelle, avec une couleur de fond différente selon le taux de remplissage, a rendu l’information immédiatement lisible sans lecture attentive de chaque ligne.

  • Moins de 70 % de remplissage : affichage neutre.
  • Entre 70 % et 99 % : texte en orange pour signaler une classe qui se remplit.
  • 100 % ou plus : texte en rouge, la classe est complète.

En résumé

Une colonne calculée dans la liste d’administration remplace avantageusement une consultation fiche par fiche, dès qu’une information dépend d’un comptage sur un autre type de contenu lié. Le principe s’applique à de nombreux contextes similaires : places restantes sur un événement, nombre de commandes liées à un client, ou articles rattachés à une catégorie précise. La direction de l’établissement a gagné un temps de gestion réel, sans jamais avoir à ouvrir une fiche classe pour vérifier un chiffre qu’elle voit désormais directement dans la liste.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi