Est-il possible d'ajouter un menu de type publication personnalisé sous un autre sous-menu de type publication personnalisé

25

Je développe actuellement un plugin wordpress qui utilise deux types de publication personnalisés. Ce que je veux savoir ici: est-il possible d'ajouter un menu de type message personnalisé en tant que sous-menu d'un autre type de message personnalisé?

    
posée KeepMove 18.08.2013 - 19:00

2 réponses

50

Oui. Lorsque vous enregistrez votre type de publication, vous devez définir show_in_menu sur la page sur laquelle vous souhaitez afficher.

Ajout d'un type de message personnalisé en tant que sous-menu de messages

Nous définissons ici le type de message "movies" à inclure dans le sous-menu sous Posts.

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);

Si vous avez une taxonomie enregistrée dans le type d'article personnalisé, elle devra également être ajoutée à la page.

Dans add_submenu_page() , le premier argument est la page à laquelle l'attribuer et le dernier est le slug du menu. / p>

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre'); 
}  

Ajout d'un type de publication personnalisé en tant que sous-menu d'un autre type de publication personnalisée

Pour ajouter les pages à un autre type de publication personnalisé, incluez le paramètre de chaîne de requête du type de publication avec les noms de page.

Pour ajouter les films CPT et son taxonomie Genre sous le type de message Divertissement, ajustez le code comme suit.

edit.php devient edit.php?post_type=entertainment

edit-tags.php devient edit-tags.php?taxonomy=genre&post_type=entertainment

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php?post_type=entertainment'
    )
);

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment'); 
}
    
réponse donnée epilektric 18.08.2013 - 19:29
4

Notre type de publication personnalisé:

$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);

Ajoutez-le pour le type de message personnalisé existant ("produit" par exemple):

$existing_CPT_menu = 'edit.php?post_type=product';
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page($existign_CPT_menu, 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);

Ou ajoutez pour notre menu de plugin personnalisé:

// Create plugin menu
add_menu_page('MyPlugin', 'MyPlugin', 'manage_options', 'myPluginSlug', 'callback_render_plugin_menu');

// Create submenu with href to view custom_plugin_post_type
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page('myPluginSlug', 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);
    
réponse donnée ConConovaloff 14.03.2017 - 12:40

Lire d'autres questions sur les étiquettes