Le verrouillage de la catégorie sur « Séance de séminaire » était attaché via
$(window).on('load') depuis $(document).ready. Dans l'iframe de la modale Pods,
l'événement load est déjà émis quand ce code s'exécute, donc le handler ne se
déclenchait jamais (révélé par un changement de timing de chargement WP/jQuery).
Exécution immédiate si document.readyState vaut déjà 'complete', sinon attente
de load comme avant.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
thalim-theme
Thème WordPress personnalisé du laboratoire THALIM (UMR 7172). Basé sur Timber 2.x (templating Twig pour WordPress), avec un système maison de bilinguisme FR/EN, une admin très customisée, et une logique de tri par date d'événement pour les annonces.
- Version : 1.0.0
- Requires WordPress : 6.0+
- Requires PHP : 7.4+
Installation
Le thème est conçu pour être cloné dans le wp-content/themes/ d'une installation WordPress. Dans le cadre du projet THALIM, le clonage est automatisé par le script bootstrap.sh du repo thalim-stack.
Manuellement :
cd wp-content/themes
git clone gitea@figureslibres.io:valentin_le_moign/thalim-theme.git thalim
cd thalim
composer install
Puis activer le thème depuis l'admin WordPress.
Plugins requis
- Pods — types de contenu et champs personnalisés (toute la structure éditoriale du site est en Pods)
- Members — gestion fine des rôles et capacités
- Simple Local Avatars — avatars uploadés (utilisés en priorité, Gravatar en fallback)
- Relevanssi — moteur de recherche
Fonctionnalités notables
Bilinguisme FR/EN maison
- Détection de la langue via le préfixe d'URL
/en/(thalim_current_language()) - Convention
"FR // EN"dans un même champ pour les textes courts (titres, lieux, sous-titres, options Pods pick…) — split par le filtre Twig|bilingual - Champs Pods séparés
*_enpour les textes longs (body_en,biographie_en,presentation_en…) - Auto-préfixage des URLs internes en mode EN via les filtres
term_link,post_link,page_link,post_type_link,author_link - Sélecteur de langue :
thalim_language_switcher() - Menus :
Navigation/Navigation-enetFooter/Footer-en
Tri par date d'événement
Les annonces avec date_de_debut / datetime (champs Pods) sont triées sur cette date plutôt que post_date, via 'thalim_event_date_order' => true sur les args de WP_Query. Filtre de plage : 'thalim_event_date_filter' => ['from' => …, 'to' => …].
Admin très customisée
- Onglets FR/EN sur l'éditeur de corps de post (
bodynatif WP +body_enPods) - Renommage « Article » → « Annonce » dans toute l'UI
- Visibilité conditionnelle des metaboxes Pods + groupement des axes thématiques par période
- Restauration automatique des champs en cas d'erreur de validation Pods (transient + JS)
- Restrictions des contributeurs (édition limitée aux posts où ils figurent comme membre)
- Dashboard et menu Outils masqués pour les non-admins
- Voir
CLAUDE.mdcôté stack pour le détail
AJAX et infinite scroll
Les pages d'archives utilisent un système d'infinite scroll AJAX (wp_ajax_load_more_posts) avec recherche Relevanssi, filtres par axe / date / taxonomie / catégorie, et override de langue côté serveur.
Compilation des styles
Les fichiers SCSS dans scss/ sont compilés manuellement vers css/.
Structure
.
├── functions.php # setup, i18n, contexte Twig, AJAX, filtres de requête, mods admin (≈1400 lignes)
├── index.php, single.php … # templates PHP qui chargent les Twig correspondants
├── templates/ # templates Twig (base.twig = layout, autres l'étendent)
│ └── partials/ # header, footer, post-card, agenda-card, search-panel…
├── scss/ → css/ # sources SASS → CSS compilé (commité)
├── js/ # scripts frontend + adminDashboardMods.js
├── inc/ # helpers PHP par contexte :
│ ├── single-helpers.php # résolution champs Pods d'un post
│ ├── author-helpers.php # profil membre + posts liés
│ ├── membres-helpers.php # page /membres (groupes par rôle)
│ ├── post-card-helpers.php # données pour les cards
│ ├── pods-conditional-required.php # patch validation Pods
│ ├── pods-save-error-handler.php # restauration des champs en cas d'erreur
│ ├── post-title-required.php # titre obligatoire
│ └── admin-users-filter.php # filtre Statut sur /wp-admin/users.php
├── assets/ # fonts, images, logo-shapes (SVG)
├── composer.json # dépendance : timber/timber ^2.3
└── vendor/ # Composer (gitignoré, à reconstruire après clone)
Architecture détaillée
Voir le fichier CLAUDE.md à la racine du repo thalim-stack pour la documentation exhaustive (conventions Pods, customisations admin, restrictions de contenu, helpers, rewrite rules, etc.).