web-dev-qa-db-fra.com

L'arborescence de la liste des cases à cocher de catégorie change lors de la modification d'un article

J'établis les catégories pour mon site Web et je les ai comme suit:

Original categories order

Ça y est, j'ai des enfants du même nom mais ils ne sont pas interchangeables. Si cela vous pose problème, vous pensez simplement qu’ils portent des noms différents.

Ensuite, je vais à un message et je veux ajouter des catégories et maintenant l'arbre est complètement parti et l'ordre des catégories est complètement foiré:

categories inside post

Pourquoi cela arrive-t-il? Ce n'est pas toujours comme ça, parfois l'arbre se présente bien mais ce comportement n'est pas cohérent. J'ai vu cela se produire d'innombrables fois sur d'autres blogs et jusqu'à présent, j'ai simplement ignoré ce comportement, car je pouvais (ou l'administrateur Web) identifier quelle catégorie est enfant de quel parent, mais ce n'est pas le cas, car certains noms se répètent. En tout cas, même si mes catégories peuvent ne pas être la meilleure pratique, peut-être que pour l'utilisateur final n'est pas transparent qu'une catégorie est enfant d'une autre si l'arbre est cassé comme ça, non?

EDIT: Cela ne se produit que lors de l'édition d'un article, lorsque j'en ajoute un nouveau, tout va bien et c'est tout:

enter image description here

4
Elaine Marley

Category-list utilise la fonction wp_terms_checklist () in wp-admin/includes/template.ph p à la ligne 90. Le paramètre "checked_ontop" est défini sur true. Donc, les cases à cocher seront sur le dessus.

Cela ne se produit que lors de l'édition d'un article, lorsque j'en ajoute un nouveau, tout va bien et dandy

C'est parce que lorsque vous créez une publication, aucune des catégories n'est cochée et que la liste sera intacte, mais lorsque vous enregistrez une, elle apparaît en haut de la page car "le check_ontop est défini sur true" .

Vous pouvez éviter cela en modifiant le paramètre checked_ontop en false en l'ajoutant à votre thème function.php.

function wpse_prevent_on_top_cat() {
    // Run only in admin
    if( is_admin() && add_action('wp_terms_checklist_args', 'wpse_prevent_on_top_cat') ) {
        // Change checked_ontop to false
        $args['checked_ontop'] = false;
        // Return the new parameter
        return $args;
    }
}

Ou simplement installer mon plugin simple sur ce code: https://github.com/pontusab/WordPress-Category-List

Le résultat:

enter image description here

4
Pontus Abrahamsson

Je vois que vous avez sélectionné toutes les catégories de parents pour votre message. Lorsque vous ajoutez un nouveau poste, la commande est bien maintenue. Mais lorsque vous éditez un tel message, les catégories associées à la pile de messages en haut, tandis que les autres catégories apparaissent en bas. Si vous avez sélectionné les catégories parent, leur association avec les catégories enfant est perdue et c'est pourquoi elles n'apparaissent pas correctement. Ce comportement est inhérent à la conception.

2
navjotjsingh