Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitLab with WP-CLI:
wp plugin install https://gitlab.com/bibliotheque-chouard/chouard-catalogue-maintenance/-/archive/main/chouard-catalogue-maintenance-main.zipInstaller l’archive depuis Extensions → Ajouter une extension → Téléverser une extension, puis activer le plugin.
La page Outils → Maintenance du catalogue permet :
- de générer ou renouveler le secret utilisé par le catalogue ;
- de prévisualiser puis confirmer une fusion de tags ou de catégories ;
- de prévisualiser puis confirmer le changement du nom affiché d’un tag ou d’une catégorie, en conservant son slug et ses associations ;
- de prévisualiser puis modifier la description d’un tag ou d’une catégorie, y compris l’effacer ;
- de prévisualiser puis confirmer la suppression d’un tag ou d’une catégorie sans enfant ;
- de consulter les dernières opérations.
- de régler l’URL HTTPS de notification du catalogue et son secret dédié.
- de suspendre ou réactiver la synchronisation sans perdre les changements en attente.
Les routes REST protégées utilisent l’en-tête X-Chouard-Catalogue-Secret et renvoient systématiquement Cache-Control: private, no-store, max-age=0.
Configurer aussi Cloudflare avec une règle « Bypass cache » pour /wp-json/chouard-catalogue/*.
Routes REST
Toutes les routes exigent l’en-tête X-Chouard-Catalogue-Secret :
GET /wp-json/chouard-catalogue/v1/taxonomies/merge-planPOST /wp-json/chouard-catalogue/v1/taxonomies/mergeGET /wp-json/chouard-catalogue/v1/taxonomies/terms/rename-planPOST /wp-json/chouard-catalogue/v1/taxonomies/terms/renamePOST /wp-json/chouard-catalogue/v1/taxonomies/terms/description-planPOST /wp-json/chouard-catalogue/v1/taxonomies/terms/descriptionGET /wp-json/chouard-catalogue/v1/taxonomies/terms/delete-planPOST /wp-json/chouard-catalogue/v1/taxonomies/terms/deleteGET /wp-json/chouard-catalogue/v1/taxonomies/transfer-planPOST /wp-json/chouard-catalogue/v1/taxonomies/transferPOST /wp-json/chouard-catalogue/v1/posts/terms/assignPOST /wp-json/chouard-catalogue/v1/sync/changes(after,limit)POST /wp-json/chouard-catalogue/v1/sync/object(type,id)POST /wp-json/chouard-catalogue/v1/sync/manifest(type,after,limit)
Les trois routes sync lisent le WordPress actuel, y compris les changements
de statut. Elles exigent le secret du catalogue. Le plugin inscrit les actions
sur les publications, leurs catégories/tags et les pièces jointes dans une
table de journal à numéros croissants. Il signale ensuite à l’URL configurée
https://…/api/wordpress-sync/notify qu’un rattrapage peut commencer. Ce
signal utilise X-Chouard-Sync-Secret, un secret distinct à renseigner aussi
sur l’API. Un signal manqué ne supprime pas l’entrée du journal.
Quand la synchronisation est désactivée, le plugin conserve les événements dans
ce journal, mais coupe les notifications et répond 423 aux lectures de l’API.
L’API ne modifie alors pas le catalogue. La réactivation envoie un signal de
rattrapage. Un signal manqué reste dans le journal et est repris par le passage
incrémental quotidien à 03 h 20 (heure de Paris) ; le rapprochement complet
reste manuel.
Les ajouts et mises à jour des médias, de leur fichier et de leurs métadonnées
déclenchent aussi une entrée ; depuis la version 1.4.1, cela inclut le texte
alternatif des images.
La version 1.4.3 corrige le traitement des métadonnées supprimées lors du
remplacement ou de la suppression d’un média WordPress.
La version 1.5.0 ajoute les pages publiées au journal, aux instantanés et au
manifeste de synchronisation. Elles restent des pages WordPress et sont
présentées comme des articles dans le catalogue.
La version 1.5.1 inscrit les fusions de tags réalisées par ce plugin dans le
journal avec les identifiants source et cible. L'API du catalogue peut ainsi
réunir aussi les relations propres à l'application (citations, livres, etc.)
et retirer l'ancien tag. Une fusion effectuée par un autre outil WordPress ne
fournit pas sa cible et ne peut pas être reconstituée automatiquement.
La version 1.5.2 permet de modifier la description d’un tag ou d’une catégorie,
depuis la page d’administration ou une route protégée. Le changement utilise
wp_update_term et entre dans le journal de synchronisation existant. La route
d’aperçu et la route d’écriture reçoivent taxonomy, term et description
en JSON ; une chaîne vide efface la description. Les routes sont en POST afin
de ne pas placer le texte de la description dans l’URL ou un cache intermédiaire.
Les réponses d’aperçu incluent le slug du terme ; la page d’administration
affiche aussi les slugs de la source et de la cible avant une fusion. Pour deux
doublons équivalents, privilégier comme cible le slug sans suffixe -2.
Vérification locale : php -d zend.assertions=1 -d assert.exception=1 tests/description.php.
Les routes de renommage prennent taxonomy, term et name. Elles modifient le nom affiché du terme seulement : son identifiant, son slug, sa hiérarchie et ses associations restent inchangés.
Les routes de suppression prennent taxonomy et term. Le plan liste les contenus actuellement associés ; la suppression refuse les catégories ayant des enfants et enlève l’étiquette des contenus concernés.
Les routes de transfert prennent sourceTaxonomy, source, targetTaxonomy et target. Elles ajoutent le terme cible à chaque contenu, enlèvent le terme source, puis le suppriment. Un terme hiérarchique qui a des enfants doit être traité après ses enfants.
La route d’attribution prend taxonomy, term et objectIds, une liste d’identifiants de publications séparés par des virgules. Elle ajoute le terme sans retirer les associations existantes.