Je souhaite afficher la liste des taxonomies personnalisées sous forme de liste déroulante.
J'ai trouvé la solution ici, la réponse de @alexufo
Mais le problème, c’est que lorsque je publie le message avec la taxonomie sélectionnée, il en crée automatiquement une autre.
Je ne peux pas commenter sa réponse car je n'ai pas 50 ans de réputation.
voici mon code
function realty_type() {
$args = array(
'show_ui' => true,
'meta_box_cb' => 'drop_cat',
);
register_taxonomy( 'realty_type', array( 'my-CPT' ), $args );
}
// Hook into the 'init' action
add_action( 'init', 'realty_type', 0 );
function drop_cat( $post, $box ) {
$defaults = array('taxonomy' => 'category');
if ( !isset($box['args']) || !is_array($box['args']) )
$args = array();
else
$args = $box['args'];
extract( wp_parse_args($args, $defaults), EXTR_SKIP );
$tax = get_taxonomy($taxonomy);
?>
<div id="taxonomy-<?php echo $taxonomy; ?>" class="acf-taxonomy-field categorydiv">
<?php
$name = ( $taxonomy == 'category' ) ? 'post_category' : 'tax_input[' . $taxonomy . ']';
echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
?>
<? $term_obj = wp_get_object_terms($post->ID, $taxonomy ); //_log($term_obj[0]->term_id)?>
<ul id="<?php echo $taxonomy; ?>checklist" data-wp-lists="list:<?php echo $taxonomy?>" class="categorychecklist form-no-clear">
<?php //wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy) ) ?>
</ul>
<?php wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'hide_empty' => 0, 'name' => "{$name}[]", 'selected' => $term_obj[0]->term_id, 'orderby' => 'name', 'hierarchical' => 0, 'show_option_none' => '—' ) ); ?>
</div>
<?php
}
Finalement, j'ai trouvé la solution après quelques essais et erreurs.
Dans les arguments d'enregistrement de taxonomie, il me suffisait de définir 'hierarchical' => true
pour qu'il cesse d'incrémenter la taxonomie et continue d'ajouter l'ajout de taxonomie automatiquement.
Je ne suis pas sûr de savoir pourquoi cela causait le problème après avoir parcouru les documents. Si quelqu'un connaît la raison, veuillez expliquer.
function realty_type() {
$args = array(
'show_ui' => true,
'meta_box_cb' => 'drop_cat',
'hierarchical' => true
);
register_taxonomy( 'realty_type', array( 'YOUR_POST_TYPE' ), $args );
}
// Hook into the 'init' action
add_action( 'init', 'realty_type', 0 );
Voici la solution la plus simple que j'utilise pour afficher une taxonomie personnalisée sous forme de liste déroulante plutôt que de cases à cocher.
1/Utilisez le plugin WordPress 'ACF' de tiers pour créer le type de champ 'Relationnel' de la taxonomie et affichez-le sous forme de liste déroulante, comme indiqué dans la capture d'écran ci-dessous.
https://wordpress.org/plugins/advanced-custom-fields/
Pour afficher la taxonomie sélectionnée, vous pouvez vous référer à la documentation d'ACF pour le type de champ de taxonomie relationnelle.
https://www.advancedcustomfields.com/resources/taxonomy/
2/Cochez la case taxonomie en ajoutant simplement 'meta_box_cb' à 'false' lors de l'enregistrement de votre taxonomie personnalisée.
J'espère que cela t'aides..!!