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!
Ari
atributul show_in_menu nu a funcționat pentru mine.
Francisco Corrales Morales
Î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; }
TomeeNS
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,