Taxonomie personnalisée en tant que case à cocher ou liste déroulante

10

J'ai enregistré une taxe douanière sur mon CPT. Sur l'écran d'édition, la boîte de méta-taxe apparaît avec un champ de saisie semi-automatique.

Est-il possible de l'afficher sous forme de cases à cocher ou de liste déroulante à la place?

Julian F. Weinert
la source

Réponses:

15

Vous n'avez probablement pas défini l'argument "hiérarchique" sur true dans votre register_taxonomy. Cela signifierait qu'il vaut par défaut false, ce qui vous donne une interface de type balise.

Ajoutez 'hierarchical' => trueà votre register_taxonomy.

vancoder
la source
Oh ouais ... Merci! MAIS Serait-il maintenant possible de le changer en case à cocher ou même de sélectionner? Je veux pouvoir mettre cela comme paramètre dans mes paramètres de plugins.
Julian F. Weinert
1
Changer hiérarchique en vrai devrait changer l'interface en cases à cocher sur votre écran d'édition pour le CPT.
vancoder
Oui, c'est le cas - mais je veux pouvoir basculer entre ces options. Je ne pense pas que ce soit une bonne pratique de basculer entre hiérarchie et non. Cela ne change PAS UNIQUEMENT l'interface, ai-je raison?
Julian F. Weinert
Eh bien, hiérarchique rend ... hiérarchique :) Vous ne pouvez pas basculer entre les 2 interfaces à ma connaissance.
vancoder
Cette solution ne crée pas de case à cocher ni de menu déroulant.
Dev
17

Depuis WP 3.7 ( https://core.trac.wordpress.org/ticket/14206 ), vous pouvez ajouter cet argument à register_taxonomy:

'meta_box_cb' => 'post_categories_meta_box'

pour obtenir la métabox de style de catégorie de case à cocher intégrée sans avoir à rendre votre taxonomie hiérarchique.

Vous pouvez également fournir votre propre fonction de rappel pour créer votre propre métabox (c'est-à-dire avec une liste déroulante).

Justin Foell
la source
Génial, c'est exactement ce dont j'avais besoin sans avoir à rendre la taxonomie hiérarchique. Merci
Alexander Holsgrove
Le problème avec cela est que les taxonomies non hiérarchiques et hiérarchiques ont une structure de données différente qui doit être sauvegardée. Pour savoir comment résoudre ce problème, voir ici gist.github.com/gschoppe/…
P. Galbraith
Cette solution ne crée pas de case à cocher ni de menu déroulant.
Dev
C'est énorme! Merci ... Je n'ai jamais su que cela existait
Sam Holguin
-1

si vous voulez changer le terme du plugin existant en case à cocher, vous devez modifier la register_taxonomy () existante.

add_action( 'init', 'change_room_term_to_checkbox', 999);
function change_room_term_to_checkbox()
{
    $tax = get_taxonomy('roomtype');
    $tax->meta_box_cb = 'post_categories_meta_box';
    $tax->hierarchical = true;
}

'roomtype' est le nom du terme utilisé sur register_taxonomy ('roomtype', array (.....

Nicola
la source