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.
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".
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}}"