web-dev-qa-db-fra.com

Comment créer des cases à cocher de taxonomie personnalisées comme "Catégories"

À l'heure actuelle, j'ai une taxonomie personnalisée pour mon type de message personnalisé case_study. Tout fonctionne, sauf le fait que lors de la création d'un nouveau message et de l'ajout d'une taxonomie, il s'agit de "tags" et je cherchais à faire ce que les messages font de leur catégorie (la case à cocher). Y a-t-il un moyen de faire cela au lieu d'ajouter ces "balises"

Voici mon code pour enregistrer cette taxonomie

PhP

add_action( 'init', 'create_case_study_tax' );

$tax_args = array(
  'hierarchical'      => false,
  'show_ui'           => true,
  'label'             => __('Industry'),
  'show_admin_column' => true,
  'query_var'         => true,
);

function create_case_study_tax() {
  register_taxonomy('industry', 'case_study', $tax_args);
} 
1
Taylor Foster

Définissez simplement 'hierarchical' => true dans les arguments sur register_taxonomy() (même si vous n’avez jamais l’intention d’ajouter des termes avec des relations parent-enfant) et vous obtiendrez la même interface utilisateur pour attribuer des termes à partir de cette taxonomie personnalisée lors de la création/la modification de ce type de publication personnalisé. taxonomie de la catégorie intégrée.

Et si vous souhaitez une liste déroulante de termes sur l'écran edit.php (comme WP Core ajoute automatiquement pour 'catégorie'), ajoutez ce qui suit:

add_action ('restrict_manage_posts', 'add_custom_taxonomy_dropdowns', 10, 2) ;

/**
 * add a dropdown/filter to the edit.php screen for our custom taxonomies
 *
 * @param $post_type string - the post type that is currently being displayed on edit.php screen
 * @param $which string - one of 'top' or 'bottom'
 */
function
add_custom_taxonomy_dropdowns ($post_type, $which = 'top')
{
    if ('case_study' != $post_type) {
        return ;
        }

    $taxonomies = get_object_taxonomies ($post_type, 'object') ;
    foreach ($taxonomies as $tax_obj) {
        if ($tax_obj->_builtin) {
            // let WP handle the builtin taxonomies
            continue ;
            }

        $args = array (
            'show_option_all' => $tax_obj->labels->all_items,
            'taxonomy'    => $tax_obj->name,
            'name'        => $tax_obj->name,
            'value_field' => 'slug',
            'orderby'     => 'name',
            'selected'    => isset ($_REQUEST[$tax_obj->name]) ? $_REQUEST[$tax_obj->name] : '0',
            'hierarchical'    => $tax_obj->hierarchical,
            'show_count'      => true,
            'hide_empty'      => true,
            'fields' => 'all',
            ) ;

        wp_dropdown_categories ($args) ;
        }

    return ;
}
2