it-swarm.com.de

Ist es möglich, ein benutzerdefiniertes Post-Typ-Menü als weiteres benutzerdefiniertes Post-Typ-Untermenü hinzuzufügen?

Derzeit entwickle ich ein WordPress-Plugin, das zwei benutzerdefinierte Post-Typen verwendet. Was ich hier wissen möchte: Ist es möglich, ein benutzerdefiniertes Beitragstyp-Menü als Untermenü eines anderen benutzerdefinierten Beitragstyps hinzuzufügen?

28
KeepMove

Ja. Wenn Sie Ihren Beitragstyp registrieren, müssen Sie show_in_menu auf die Seite einstellen, auf der er angezeigt werden soll.

Hinzufügen eines benutzerdefinierten Beitragstyps als Untermenü für Beiträge

Hier stellen wir unter Beiträge den Beitragstyp "Filme" ein, der in das Untermenü 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 Sie eine Taxonomie für den benutzerdefinierten Beitragstyp registriert haben, muss diese ebenfalls zur Seite hinzugefügt werden.

In add_submenu_page() ist das erste Argument die Seite, der es zugewiesen werden soll, und das letzte ist der Menüpunkt.

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ügen eines benutzerdefinierten Beitragstyps als Untermenü eines anderen benutzerdefinierten Beitragstyps

Um die Seiten einem anderen benutzerdefinierten Beitragstyp hinzuzufügen, geben Sie den Abfragezeichenfolgenparameter des Beitragstyps zusammen mit den Seitennamen an.

Um die CPT-Filme und ihr Taxonomie-Genre unter dem Beitragstyp Unterhaltung hinzuzufügen, passen Sie den Code wie folgt an.

edit.php wird zu 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'); 
}
57
epilektric

Unser benutzerdefinierter Beitragstyp:

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

Fügen Sie ihn für den vorhandenen benutzerdefinierten 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);

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);
5
ConConovaloff