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

Thèmes

Thème pour établissement scolaire : un annuaire d’enseignants sans CPT plugin

Un lycée voulait un annuaire de son corps enseignant, avec fiche par matière et niveau. Plutôt qu'une extension d'annuaire généraliste, un type de contenu déclaré directement dans le thème.

Par WordPress Développement • 26 septembre 2022 • 4 min de lecture • Aucun commentaire
Thème pour établissement scolaire : un annuaire d'enseignants sans CPT plugin

Un lycée souhaitait présenter son corps enseignant sur son nouveau site : une fiche par enseignant, avec sa matière, son niveau d’intervention (seconde, première, terminale) et une courte présentation. Face à ce besoin, plusieurs extensions d’annuaire généralistes existaient dans l’écosystème WordPress, avec leurs propres champs prédéfinis, souvent pensés pour des annuaires d’entreprise (poste, service, coordonnées directes) mal adaptés à un contexte scolaire.

Le choix : un CPT déclaré dans le thème

Plutôt que d’adapter un plugin générique à coups de filtres et de champs personnalisés ajoutés après coup, la décision a été de déclarer un type de contenu personnalisé directement dans le thème, avec exactement les champs et taxonomies nécessaires à ce cas précis :

function mon_theme_cpt_enseignant() {
    register_post_type( 'enseignant', array(
        'labels' => array(
            'name'          => 'Enseignants',
            'singular_name' => 'Enseignant',
        ),
        'public'       => true,
        'has_archive'  => true,
        'rewrite'      => array( 'slug' => 'enseignants' ),
        'supports'     => array( 'title', 'editor', 'thumbnail' ),
        'menu_icon'    => 'dashicons-businessman',
    ) );
}
add_action( 'init', 'mon_theme_cpt_enseignant' );

Deux taxonomies plutôt que des champs libres

La matière et le niveau d’intervention ont été modélisés en taxonomies plutôt qu’en simples champs de texte, pour permettre le filtrage de l’annuaire par matière ou par niveau sans logique de recherche supplémentaire à coder :

function mon_theme_taxonomies_enseignant() {
    register_taxonomy( 'matiere', 'enseignant', array(
        'labels'       => array( 'name' => 'Matières' ),
        'hierarchical' => false,
        'public'       => true,
        'rewrite'      => array( 'slug' => 'matiere' ),
    ) );

    register_taxonomy( 'niveau_intervention', 'enseignant', array(
        'labels'       => array( 'name' => 'Niveaux' ),
        'hierarchical' => true,
        'public'       => true,
        'rewrite'      => array( 'slug' => 'niveau' ),
    ) );
}
add_action( 'init', 'mon_theme_taxonomies_enseignant' );
L'essentiel à retenir : Un CPT déclaré dans le thème plutôt qu'un plugin d'annuaire générique ; Des champs de taxonomie pour matière et niveau, réutilisables ailleurs ; Un template archive dédié plutôt qu'un shortcode d'annuaire

Le template d’archive de l’annuaire

Un fichier archive-enseignant.php, propre au thème, affiche la liste complète avec un filtre par matière construit à partir des termes réellement utilisés, sans dépendre d’un shortcode de plugin qui aurait imposé sa propre structure HTML :

<?php get_header(); ?>
<div class="annuaire-filtres">
    <?php
    $matieres = get_terms( array( 'taxonomy' => 'matiere', 'hide_empty' => true ) );
    foreach ( $matieres as $matiere ) {
        printf(
            '<a href="%s">%s</a>',
            esc_url( get_term_link( $matiere ) ),
            esc_html( $matiere->name )
        );
    }
    ?>
</div>
<div class="annuaire-liste">
    <?php while ( have_posts() ) : the_post(); ?>
        <article>
            <?php the_post_thumbnail( 'medium' ); ?>
            <h2><?php the_title(); ?></h2>
            <?php the_excerpt(); ?>
        </article>
    <?php endwhile; ?>
</div>
<?php get_footer(); ?>

Un champ complémentaire pour les matières multiples

Certains enseignants intervenant sur plusieurs matières (histoire et géographie, par exemple), la taxonomie matiere a été déclarée non hiérarchique et autorisant plusieurs termes par fiche, contrairement à une catégorie unique qui aurait obligé à choisir arbitrairement une seule matière principale par enseignant.

Résultat après mise en production

Sur les 48 fiches enseignants créées à l’ouverture du site, la direction du lycée a pu gérer elle-même les ajouts et départs en cours d’année scolaire directement depuis l’administration WordPress standard, sans formation particulière au-delà de la prise en main classique de l’écriture d’un article, puisque l’interface de saisie d’une fiche enseignant reprend exactement les mêmes mécanismes qu’un article de blog.

Ce que ce cas ne couvre pas

Ce projet ne comprenait ni gestion des inscriptions des élèves, ni espace élève sécurisé avec authentification, deux besoins portés par un logiciel de vie scolaire distinct déjà en place dans l’établissement, sans lien avec le site vitrine et son annuaire.

En résumé

Pour un besoin d’annuaire aussi spécifique que celui d’un établissement scolaire, un type de contenu et des taxonomies déclarés directement dans le thème ont offert une structure de données exactement adaptée au contexte, avec une prise en main immédiate par l’équipe de direction, sans les compromis d’un plugin d’annuaire pensé pour un usage plus générique.

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