L'objectif est de s'assurer que, lors de la modification d'un message, la métabox qui répertorie une taxonomie hiérarchique ne se réorganise pas lors de la mise à jour pour mettre les éléments cochés au premier plan.
À l’heure actuelle, edit-form-advanced.php
appelle add_meta_box()
, en passant un rappel de post_categories_meta_box
, défini dans meta-boxes.php
.
post_categories_meta_box()
appelle wp_terms_checklist()
en laissant le paramètre checked_ontop
non défini. wp_terms_checklist()
définit par défaut ce paramètre sur true
, qui est la cause première de tout ce hooplah.
Nary un crochet de filtre se trouve n'importe où dans la chaîne jusqu'à ce que nous revenions et découvrons add_meta_boxes
et add_meta_boxes_{$post_type}
.
La seule solution que je pouvais trouver moi-même consistait à accrocher l'une de ces actions, à globaliser $wp_meta_boxes
et à remplacer les occurrences du rappel post_categories_meta_box
par un rappel de mon choix, où je dupliquais complètement l'ensemble de post_categories_meta_box()
et ajoutais simplement le paramètre 'checked_ontop' => false
. .
Travaux. Mais fugly. Cela semble ridicule - n'y a-t-il pas de moyen plus élégant de laisser simplement vos taxonomies hiérarchiques conserver leur ordre dans des métaboxes?
Il existe un plugin spécialement conçu pour corriger cette "fonctionnalité" de WordPress, il s'appelle Arbre de liste de contrôle de catégorie . Malgré son nom, cela fonctionne aussi sur les taxonomies personnalisées.