Avec la structure de permaliens /%category%/%postname%/, la règle
(.+?)/([^/]+)(?:/([0-9]+))?/?$ lit un dernier segment numérique comme un
numéro de page : l'article répond 404 tout en restant listé partout.
Deux chemins produisaient un tel slug :
- un titre vide à la première publication — le cœur retombe alors sur l'ID
du post et ne régénère plus jamais le slug ensuite, même titre corrigé ;
c'est ce que provoquait post-title-required.php, qui laisse le post
s'écrire en publish avant d'annuler son statut ;
- un titre légitimement numérique (« 1917 »).
- inc/post-slug-guard.php : filtre wp_unique_post_slug limité à post/page,
suffixe les slugs purement numériques (1917 → 1917-2). Les nav_menu_item
et attachments, dont les slugs numériques sont normaux, ne sont pas touchés.
- pods-save-error-handler.php : l'annulation de statut vide aussi post_name
quand le titre est vide, pour qu'il se régénère depuis le vrai titre.
Les deux articles déjà touchés en prod restent à re-sluguer à la main.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011w7RzAHv4r1Yahnm2NwDDG
Le champ adresse (single + séances) était rendu brut : les retours à la ligne
saisis au back-office n'apparaissaient pas. Application de nl2br + esc_html à la
source (les templates le rendent en |raw), pour afficher les adresses sur
plusieurs lignes tout en gardant la sortie échappée.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>