web-dev-qa-db-fra.com

Comment ajouter une taxonomie personnalisée pour apparaître dans un menu de type de message personnalisé?

Je ne sais vraiment pas comment poser cette question correctement. J'ai créé un type de message personnalisé avec des badges nominatifs et ajouté des taxonomies personnalisées (niveau, compétence). Maintenant, je veux ajouter un nouvel élément de sous-menu à ce message personnalisé. Ceci est mon message personnalisé:

  add_action('init', 'bsp_badges_register');
  function bsp_badges_register() {

$labels = array(
    'name' =>_x('Badges', 'post type general name'),
    'singular_name' =>_x('Badge', 'post type singular name'),
    'add_new' =>_x('Add New', 'badge item'),
    'add_new_item' =>__('Add New Badge Item'),
    'edit_item' =>__('Edit Badge Item'),
    'new_item' =>__('New Badge Item'),
    'view_item' =>__('View Badge Item'),
    'search_items' =>__('Search Badge'),
    'not_found' =>__('Nothing found'),
    'not_found_in_trash' =>__('Nothing found in Trash'),
    'parent_item_colon' => ''
);

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => true,
    'menu_icon' => 'dashicons-welcome-learn-more',
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 75,
    'supports' => array('title','editor','thumbnail'),
    'has_archive'=>true,
    'show_in_menu'=>'badge-school'

    //'taxonomies' => array('post_tag','category')
  ); 

register_post_type( 'badge' , $args );
    flush_rewrite_rules();

Une de mes taxonomies:

     register_taxonomy(
'skills',
array('badge'), 
array(
'hierarchical'=>true,
'public'=>true,
'label'=>'Skills',
'labels'=>array(
    'name'=> _x( 'Skills', 'taxonomy general name' ),
    'singular_name'=>'Skill',
    'menu_name'=>__('Skills')
    ),
'show_ui'=>true,
'rewrite'=>array('slug'=>'skill'),
)
);

J'ai ensuite essayé d'ajouter un sous-menu comme celui-ci:

    add_action('admin_menu','bsp_plugin_menu');

    function bsp_plugin_menu(){
    add_menu_page('Badge school', 'Badge School', 'manage_options','badge-school','bsp_students_function','dashicons-welcome-learn-more');
    //my taxonomy
    add_submenu_page('edit.php?post_type=badge', 'Skills', 'Skills', 'manage_options', 'edit.php?taxonomy=skill&post_type=badge'); 

Mais ça ne se voit pas. Je vois le menu Badges et rien d'autre. Il devrait également y avoir ajouter un nouveau message et il ne s'affiche pas. Je ne sais pas ce que je fais mal et comment y remédier. J'ai besoin de tout rassembler dans un seul menu, car j'ai besoin d'ajouter plus de sous-menus sans taxonomies.

J'espère que vous pouvez comprendre mon problème, comme je l'ai mentionné, je ne sais pas vraiment comment poser la question.

1
dea

Donc, pour répondre à ma propre question après beaucoup de recherches sur Google:

Dans le tableau args, j'ai commenté l'option pour show_in_menu, afin que le type de message personnalisé crée le menu lui-même. Ensuite, je n'ai pas ajouté le menu admin, mais juste le sous-menu (le crochet reste toujours).

    add_action('admin_menu','bsp_plugin_menu');

Et le premier paramètre est celui qui l'affiche dans le menu et c'est un nom du type de message personnalisé:

    add_submenu_page(**'edit.php?post_type=badge'**, 'Add new students', 'Add new students', 'manage_options','add-new-students','bsp_students_add');

Et maintenant, il apparaît dans le menu avec toutes les taxonomies et les messages personnalisés.

1
dea