Ist es möglich, ein benutzerdefiniertes Post-Typ-Menü als weiteres benutzerdefiniertes Post-Typ-Untermenü hinzuzufügen
2 Antworten
- Stimmen
-
- 2013-08-18
Ja. Wenn Sie Ihren Beitragstyp registrieren,müssen Sie
show_in_menu
auf die Seite setzen,auf derer angezeigt werden soll.Hinzufügeneinesbenutzerdefinierten Beitragstyps als Untermenüfür Beiträge
Hier legen wir den Beitragstyp "Filme"fest,derin das Untermenü unter "Beiträge" aufgenommen werden soll.
register_post_type( 'movies', array( 'labels' => array( 'name' => __( 'Movies' ), 'singular_name' => __( 'Movie' ) ), 'public' => true, 'has_archive' => true, 'show_in_menu' => 'edit.php' ) );
Wenn Sieeine Taxonomiefür denbenutzerdefinierten Beitragstyp registriert haben,muss dieseebenfalls zur Seite hinzugefügt werden.
In
add_submenu_page()
ist daserste Argument die Seite,deres zugewiesen werden soll,und das Zuletztist der Menü-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'); }
Hinzufügeneinesbenutzerdefinierten Beitragstyps als Untermenüeines anderenbenutzerdefinierten Beitragstyps
Um die Seiteneinem anderenbenutzerdefinierten Beitragstyp hinzuzufügen,geben Sie den Abfragezeichenfolgenparameter des Beitragstyps zusammenmit den Seitennamen an.
Um die CPT-Filme undihr Taxonomie-Genre unter dem Beitragstyp Unterhaltung hinzuzufügen,passen Sie den Code wiefolgt an.
edit.php
wird zuedit.php?post_type=entertainment
edit-tags.php
wird zuedit-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'); }
-
Hallo danke.Es klappt.Aber das Untermenü cpt hat sein Untermenü verloren.Hi, thanks. It works. But the sub menu cpt lost its submenu.
- 2
- 2013-08-18
- Ari
-
Ich habemeine Antwortmit einer Möglichkeit aktualisiert,Taxonomieneinzuschließen.I've update my answer with a way to include taxonomies.
- 0
- 2013-08-21
- epilektric
-
Hallo danke!Ich hatte den Weg dazugefunden!Aber vielleichtgehört Ihnenein besseres Ergebnis!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
-
Das Attribut `show_in_menu` hatbei mirnichtfunktioniert.the `show_in_menu` attribute, didn't worked for me.
- 0
- 2015-02-26
- Francisco Corrales Morales
-
Entschuldigungfür die Wiederholung.Damit das Untermenü und das Paretn-Menü hervorgehobenbleiben,müssen Sie WPeinige weitere Informationengeben.Ok,der Parameter 'show_in_menu'macht das Untermenü aktuell/hervorgehoben,wenn 'my_post_type' auf dem Bildschirm angezeigt wird.Jetztmüssen wir aucheine weitere Aktion hinzufügen,die das übergeordnete Menü hervorhebt.Sie können dies versuchen: add_filter ('parent_file','menu_highlight'));Funktionmenu_highlight ($parent_file) {global $plugin_page,$post_type;if ('my_post_type'==$post_type) {$plugin_page='edit.php?post_type=my_post_type';//der Name des Untermenü-Hooks} 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
Unserbenutzerdefinierter Beitragstyp:
$args['show_in_menu'] = false; register_post_type('custom_plugin_post_type', $args);
Fügen Sieihnfür den vorhandenenbenutzerdefinierten Beitragstyp hinzu (z. B. "Produkt"):
$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);
Oderfügen Siefür unserbenutzerdefiniertes Plugin-Menü Folgendes hinzu:
// 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);
-
Vielen Dank!Esist hilfreichfürmich.Thanks! It's helpful for me.
- 0
- 2019-11-27
- NSukonny
Ichentwickle derzeitein WordPress-Plugin,das zweibenutzerdefinierte Beitragstypen verwendet.Wasich hier wissenmöchte: Istesmöglich,ein benutzerdefiniertes Post-Typ-Menü als Untermenüeines anderenbenutzerdefinierten Post-Typs hinzuzufügen?