Este Posibil Să Adăugăm Meniul unui Tip de Postare Personalizat Ca Submeniu Al Altui Tip de Postare Personalizat
În prezent dezvolt un plugin WordPress care folosește două tipuri de postări personalizate. Ceea ce vreau să știu este: este posibil să adaug meniul unui tip de postare personalizat ca submeniu al altui tip de postare personalizat?
Da. Când înregistrezi tipul tău de postare, trebuie să setezi show_in_menu
la pagina unde dorești să fie afișat.
Adăugarea unui tip de postare personalizat ca sub-meniu al Postărilor
Aici setăm tipul de postare "movies" să fie inclus în sub-meniu sub Postări.
register_post_type( 'movies',
array(
'labels' => array(
'name' => __( 'Filme' ),
'singular_name' => __( 'Film' )
),
'public' => true,
'has_archive' => true,
'show_in_menu' => 'edit.php'
)
);
Dacă ai o taxonomie înregistrată pentru tipul de postare personalizat, aceasta va trebui să fie adăugată și pe pagină.
În add_submenu_page()
primul argument este pagina căreia să i se atribuie, iar ultimul este slug-ul meniului.
add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
add_submenu_page('edit.php', 'Gen', 'Gen', 'manage_options', 'edit-tags.php?taxonomy=genre');
}
Adăugarea unui tip de postare personalizat ca sub-meniu al altui tip de postare personalizat
Pentru a adăuga paginile la alt tip de postare personalizat, include parametrul query string al tipului de postare împreună cu numele paginilor.
Pentru a adăuga CPT-ul Filme și taxonomia lui Gen sub tipul de postare Divertisment, ajustează codul astfel.
edit.php
devine edit.php?post_type=entertainment
edit-tags.php
devine edit-tags.php?taxonomy=genre&post_type=entertainment
register_post_type( 'movies',
array(
'labels' => array(
'name' => __( 'Filme' ),
'singular_name' => __( 'Film' )
),
'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', 'Gen', 'Gen', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment');
}

Bună, îți mulțumesc! Găsisem deja o metodă să o fac! Dar poate a ta va da un rezultat mai bun!

atributul show_in_menu
nu a funcționat pentru mine.

Îmi cer scuze pentru repetare. Pentru ca submeniul și meniul părinte să rămână evidențiate, trebuie să oferi WordPress mai multe informații. Bun, parametrul 'show_in_menu' face ca submeniul să fie curent/evidențiat când 'my_post_type' este afișat pe ecran. Acum, trebuie să adăugăm și o altă acțiune care să evidențieze meniul părinte. Puteți încerca asta: 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'; // numele hook-ului submeniului } return $parent_file; }

Tipul nostru personalizat de postare:
$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);
Adăugați-l pentru un Tip de Postare Personalizat existent (de exemplu "product"):
$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);
Sau adăugați pentru meniul personalizat al plugin-ului nostru:
// Creează meniul plugin-ului
add_menu_page('MyPlugin', 'MyPlugin', 'manage_options', 'myPluginSlug', 'callback_render_plugin_menu');
// Creează submeniul cu link către vizualizarea 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);

Aceasta este soluția care a funcționat pentru mine
add_action('admin_menu', 'vrodos_plugin_menu');
function vrodos_plugin_menu(){
add_menu_page( 'Pagina Plugin VRodos',
'VRodos',
'manage_options',
'vrodos-plugin',
'vrodos_plugin_main_page');
add_submenu_page('vrodos-plugin',
'Jocuri',
'Jocuri',
'manage_options',
'edit.php?post_type=vrodos_game'
);
}
Când înregistrez tipul de postare personalizat 'vrodos_game' setez
'show_ui' => true,
'show_in_menu' => false,
