web-dev-qa-db-fra.com

Comment afficher une taxonomie non hiérarchique sous forme de termes avec des cases à cocher?

J'aimerais qu'une taxonomie personnalisée non hiérarchique soit affichée dans l'écran d'administration de publication/ajout de messages pour un type de message personnalisé. De toute évidence, lorsque la taxonomie personnalisée est non hiérarchique, la méta-boîte affichée est similaire aux balises. Il s’agit d’un champ de texte avec la suggestion automatique.

Toutefois, je suis davantage intéressé par une taxonomie plate et non hiérarchique, sous forme de liste de termes de case à cocher. En substance, j'aimerais que ses fonctionnalités soient identiques à celles des catégories, à l'exception du fait que les termes enfants ne peuvent pas être ajoutés.

C’est sûrement quelque chose que d’autres développeurs ont fait, mais les recherches normales sur Google ne me sont pas très utiles. Apparemment c'était le comportement par défaut lorsque les taxonomies personnalisées ont été introduites à l'origine dans la v2.8.

Example of non-hierarchical taxonomy with checkboxes

Je ne cherche vraiment pas de solution de plug-in, cependant des exemples de code provenant de plug-ins seraient bien. Lors du développement de sites pour les clients, il est souvent avantageux de leur permettre de voir la liste des termes pré-établis pour un type de message donné. Le client doit être autorisé à ajouter des conditions supplémentaires, mais pas des conditions enfants supplémentaires.

5
Philip Downer

Je ne sais pas si vous avez déjà trouvé une solution à ce problème, mais lorsque j'ai recherché un appareil similaire hier, j'ai trouvé ce tutoriel sur WPtuts très utile. Il utilise des boutons radio, mais vous pouvez facilement le modifier pour le faire fonctionner avec les cases à cocher. http://wp.tutsplus.com/tutorials/creative-coding/how-to-use-radio-buttons-with-taxonomies/

3
Alex Hommel

J'ai la solution (basée sur le lien du tutoriel tutsplus ci-dessus) qui traite des cases à cocher réelles ici: http://wordpress.org/support/topic/display-tag-admin-box- like-categories-without-hierarchy , il ignore l'onglet "le plus utilisé" de la metabox à laquelle le lien tutsplus s'adresse, mais personnellement, je le garde simple.

4
Chrisdigital

Pardonnez-moi mon français, mais pourquoi ne pas utiliser le construit dans hierarchical = true et ensuite masquer toutes les boîtes de dépôt parent en utilisant admin css?

2
jam

utilisez la hiérarchie et masquez le parent sélectionné, comme ceci:

function hide_taxonomy_parent( $slug ) {
    add_action( 'admin_head', function () use ( $slug ) {
        echo "<style>
            .taxonomy-{$slug} .term-parent-wrap,
            [for='new{$slug}_parent'],
            #new{$slug}_parent {
                display: none !important;
                visibility: hidden !important;
            }
        </style>";
    } );
}

hide_taxonomy_parent( 'brand' );
1
Maxwell s.c

Je ferais ça:

$add_action('add_meta_boxes_my_posttype', 'my_add_meta_boxes');

function my_add_meta_boxes ($post) {

    $taxoms = array('my_taxonomy', 'my_second_taxonomy');

    foreach ( get_object_taxonomies( $post ) as $tax_name ) {
        if( !in_array($tax_name, $taxoms) ) continue;

        $taxonomy = get_taxonomy($tax_name);
        if ( ! $taxonomy->show_ui )
            continue;

        $label = $taxonomy->labels->name;

        if ( !is_taxonomy_hierarchical($tax_name) ) {
            add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));
            remove_meta_box('tagsdiv-' . $tax_name, null, 'side');
        }
    }
}

Ensuite, à vous de cacher la zone de sélection parent du formulaire

1
Laurent