Ich entwickle derzeit ein WordPress-Plugin, das zwei benutzerdefinierte Post-Typen verwendet. Was ich hier wissen möchte: Ist es möglich, ein benutzerdefiniertes Post-Menü als das Untermenü eines anderen benutzerdefinierten Post-Typs hinzuzufügen?
Ja. Wenn Sie Ihren Post-Typ registrieren, müssen Sie show_in_menu
auf der Seite show_in_menu
auf der sie angezeigt werden soll.
Hier stellen wir den Post-Typ “Filme” ein, der im Untermenü Posts enthalten sein soll.
register_post_type( 'movies', array( 'labels' => array( 'name' => __( 'Movies' ), 'singular_name' => __( 'Movie' ) ), 'public' => true, 'has_archive' => true, 'show_in_menu' => 'edit.php' ) );
Wenn Sie eine Taxonomie für den benutzerdefinierten Posttyp registriert haben, muss diese ebenfalls zur Seite hinzugefügt werden.
In add_submenu_page()
das erste Argument die Seite, der es zugeordnet werden soll, und das letzte ist das 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'); }
Um die Seiten zu einem anderen benutzerdefinierten Post-Typ hinzuzufügen, fügen Sie den Abfrage-String-Parameter des Post-Typs zusammen mit den Seitennamen hinzu.
Um die CPT-Filme und ihre Taxonomie Genre unter dem Post-Typ Unterhaltung hinzuzufügen, passen Sie den Code so an.
edit.php
wird edit.php?post_type=entertainment
edit-tags.php
wird zu 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'); }
Unser benutzerdefinierter Beitragstyp:
$args['show_in_menu'] = false; register_post_type('custom_plugin_post_type', $args);
Fügen Sie ihn für den bestehenden benutzerdefinierten Posttyp hinzu (zum Beispiel “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);
Oder fügen Sie für unser benutzerdefiniertes Plugin-Menü 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);