È possibile aggiungere il menu del tipo di articolo personalizzato come un altro sottomenu del tipo di articolo personalizzato
2 risposta
- voti
-
- 2013-08-18
Sì. Quando registriiltipo dipost,deviimpostare
show_in_menu
sullapaginain cui desideri che venga visualizzato.Aggiunta di untipo dipostpersonalizzato come sottomenu di Post
Quiimpostiamoiltipo dipost "film" daincluderenel sottomenu sotto Post.
register_post_type( 'movies', array( 'labels' => array( 'name' => __( 'Movies' ), 'singular_name' => __( 'Movie' ) ), 'public' => true, 'has_archive' => true, 'show_in_menu' => 'edit.php' ) );
Se hai unatassonomia registrataneltipo dipostpersonalizzato,dovràessere aggiunta anche allapagina.
In
add_submenu_page()
ilprimo argomento è lapagina a cui assegnarloe il l'ultimo è lo slug delmenu.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'); }
Aggiunta di untipo di articolopersonalizzato come sottomenu di un altrotipo di articolopersonalizzato
Per aggiungere lepagine a un altrotipo dipostpersonalizzato,includiilparametro della stringa di query deltipo dipostinsieme ainomi dellepagine.
Per aggiungerei film CPTe la suatassonomia Genere sottoiltipo dipost Intrattenimento,modificail codicein questomodo.
edit.php
diventaedit.php?post_type=entertainment
edit-tags.php
diventaedit-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'); }
Yes. When you register your post type you need to set
show_in_menu
to the page you would like it displayed on.Adding a custom post type as a sub-menu of Posts
Here we set the "movies" post type to be included in the sub-menu under Posts.
register_post_type( 'movies', array( 'labels' => array( 'name' => __( 'Movies' ), 'singular_name' => __( 'Movie' ) ), 'public' => true, 'has_archive' => true, 'show_in_menu' => 'edit.php' ) );
If you have a taxonomy registered to the custom post type it will need to be added to the page as well.
In
add_submenu_page()
the first argument is the page to assign it to and the last is the menu slug.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'); }
Adding a custom post type as a sub-menu of another custom post type
To add the pages to another custom post type include the post type's query string parameter along with the page names.
To add the CPT Movies and its taxonomy Genre under the post type Entertainment adjust the code like this.
edit.php
becomesedit.php?post_type=entertainment
edit-tags.php
becomesedit-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'); }
-
Ciaograzie.Funziona.Mail sottomenu cpt hapersoil sottomenu.Hi, thanks. It works. But the sub menu cpt lost its submenu.
- 2
- 2013-08-18
- Ari
-
Ho aggiornato lamia risposta con unmodoperincludere letassonomie.I've update my answer with a way to include taxonomies.
- 0
- 2013-08-21
- epilektric
-
Ciaograzie!Avevotrovatoilmodoperfarlo!Maforseiltuo darà un risultatomigliore!Hi thanks you! I had found the way to do it! But may be yours will give a better result!
- 0
- 2013-08-21
- Ari
-
l'attributo `show_in_menu`,non hafunzionatoperme.the `show_in_menu` attribute, didn't worked for me.
- 0
- 2015-02-26
- Francisco Corrales Morales
-
Scusaper aver ripetuto.Affinchéil sottomenue ilmenuparetn rimanganoevidenziati ènecessariofornire a WP alcuneinformazioniin più.Ok,ilparametro "show_in_menu" rendeil sottomenu corrente/evidenziato quando "my_post_type" è sullo schermo.Ora,dobbiamo anche aggiungere un'altra azione,cheevidenzieràilmenuprincipale.Puoiprovare questo: add_filter ('parent_file','menu_highlight'));funzionemenu_highlight ($parent_file) {global $plugin_page,$post_type;if ('my_post_type'==$post_type) {$plugin_page='edit.php?post_type=my_post_type';//il sottomenu hookname} return $parent_file;}Sorry for repeating. In order for the submenu and paretn menu to stay highlighted you need to give WP some more information. Ok, the 'show_in_menu' parameter makes the submenu to be current/highlighted when 'my_post_type' is on the screen. Now, we need also to add another action, that will highlight the parent menu. You could try this: add_filter( 'parent_file', 'menu_highlight' )); function menu_highlight( $parent_file ){ global $plugin_page, $post_type; if ('my_post_type' == $post_type) { $plugin_page = 'edit.php?post_type=my_post_type'; // the submenu hook name } return $parent_file; }
- 0
- 2017-05-26
- TomeeNS
-
- 2017-03-14
Ilnostrotipo dipostpersonalizzato:
$args['show_in_menu'] = false; register_post_type('custom_plugin_post_type', $args);
Aggiungiloperiltipo di articolopersonalizzatoesistente ("prodotto" adesempio):
$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);
Oppure aggiungiperilnostromenu dipluginpersonalizzato:
// 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);
Our custom post type:
$args['show_in_menu'] = false; register_post_type('custom_plugin_post_type', $args);
Add him for existing Custom Post Type ("product" for example):
$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);
Or add for our custom plugin menu:
// 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);
-
Grazie!È utileperme.Thanks! It's helpful for me.
- 0
- 2019-11-27
- NSukonny
Attualmente sto sviluppando unpluginper wordpress che utilizza duetipi dipostpersonalizzati.Quello che voglio sapere qui: èpossibile aggiungere unmenu ditipo di articolopersonalizzato come sottomenu di un altrotipo di articolopersonalizzato?