web-dev-qa-db-fra.com

Taxonomie personnalisée non hiérarchique à l'aide des cases à cocher de l'écran d'édition -> enregistrement du problème

J'ai enregistré une taxonomie personnalisée non hiérarchique ('property_features'). Il y a une case à cocher pour chaque terme de cette taxe dans une méta-boîte personnalisée à l'écran d'édition. Tous les termes sont affichés et tous les termes qui sont attachés à la publication sont vérifiés correctement.

Jusqu'ici tout va bien...

... mais lorsque je coche l'une des cases non cochées et que je clique sur Enregistrer, wordpress crée un nouveau terme.

EXEMPLE:

code de la case à cocher non cochée Je veux voir cochée après la sauvegarde

<li id="property_features-11">
  <label class="selectit">
    <input value="11" name="tax_input[property_features][]" id="in-property_features-11" type="checkbox"> Term-Name
  </label>
</li>

code du checkobx résultant:

<li id="property_features-55" class="popular-category">
  <label class="selectit">
    <input value="55" name="tax_input[property_features][]" id="in-property_features-55" checked="checked" type="checkbox"> 11
  </label>
</li>

code que j'utilise pour créer les cases à cocher:

function display_property_features_meta_box($post) {

    $tax_name = 'property_features';
    $taxonomy = get_taxonomy($tax_name);
    $args     = array(
        'descendants_and_self'  => 0,
        'selected_cats'         => false,
        'popular_cats'          => false,
        'walker'                => null,
        'taxonomy'              => $tax_name,
    );

    ?>
    <div class="tagsdiv" id="tagsdiv-<?php echo $tax_name; ?>">


        <?php if ( current_user_can($taxonomy->cap->assign_terms) ) : ?>
        <div class="tagchecklist">

            <?php
            ?>
            <ul id="<?php echo $tax_name; ?>checklist" data-wp-lists="list:<?php echo $tax_name?>" class="tagschecklist form-no-clear">
                <?php wp_terms_checklist($post->ID, $args ) ?>
            </ul>

        </div>
        <?php endif; ?>


    </div>
    <?php
}

Quand je change pour

'hierarchical' => true

dans le register_taxonomy args tout fonctionne bien.

3
LichtAnd

Cela semble être un bug principal, repéré à 4.5 également. Bien que la documentation implique le contraire, vous ne pouvez pas choisir concrètement des taxonomies non hiérarchiques avec la metabox "checkoxed", la seule option qui fonctionne est la metabox de style "tag".

2
Mark Kaplun

Si vous utilisez des catégories (hierarchical = true), vous devriez travailler avec term_id:

<input value="{{WP_Term->term_id}}"

Si vous utilisez des balises (hierarchical = false), vous devriez travailler avec name:

<input value="{{WP_Term->name}}"
0
Adam Stybor