ฉันกำลังพัฒนาปลั๊กอิน wordpress ที่ใช้โพสต์ที่กำหนดเองสองประเภท สิ่งที่ฉันอยากรู้ที่นี่: เป็นไปได้ไหมที่จะเพิ่มเมนูประเภทโพสต์ที่กำหนดเองเป็นเมนูย่อยของโพสต์ประเภทอื่นที่กำหนดเอง?
ฉันกำลังพัฒนาปลั๊กอิน wordpress ที่ใช้โพสต์ที่กำหนดเองสองประเภท สิ่งที่ฉันอยากรู้ที่นี่: เป็นไปได้ไหมที่จะเพิ่มเมนูประเภทโพสต์ที่กำหนดเองเป็นเมนูย่อยของโพสต์ประเภทอื่นที่กำหนดเอง?
คำตอบ:
ใช่. เมื่อคุณลงทะเบียนประเภทโพสต์ของคุณคุณจะต้องตั้งค่าshow_in_menu
เป็นหน้าที่คุณต้องการให้มันปรากฏบน
ที่นี่เราตั้งค่าประเภทโพสต์ "ภาพยนตร์" ที่จะรวมอยู่ในเมนูย่อยภายใต้โพสต์
register_post_type( 'movies',
array(
'labels' => array(
'name' => __( 'Movies' ),
'singular_name' => __( 'Movie' )
),
'public' => true,
'has_archive' => true,
'show_in_menu' => 'edit.php'
)
);
หากคุณมีการลงทะเบียน taxonomy ให้กับประเภทโพสต์ที่กำหนดเองคุณจะต้องเพิ่มลงในหน้าเว็บด้วย
ในadd_submenu_page()
อาร์กิวเมนต์แรกคือหน้าเพื่อกำหนดให้และสุดท้ายคือกระสุนเมนู
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');
}
หากต้องการเพิ่มหน้าไปยังประเภทโพสต์ที่กำหนดเองอื่นให้รวมพารามิเตอร์สตริงข้อความค้นหาของโพสต์พร้อมกับชื่อหน้า
หากต้องการเพิ่มภาพยนตร์ CPT และประเภทอนุกรมวิธานภายใต้ประเภทโพสต์ความบันเทิงปรับรหัสเช่นนี้
edit.php
กลายเป็น edit.php?post_type=entertainment
edit-tags.php
กลายเป็น 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');
}
show_in_menu
แอตทริบิวต์ไม่ได้ทำงานให้ฉัน
โพสต์ที่กำหนดเองของเราประเภท:
$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);
เพิ่มเขาสำหรับประเภทโพสต์ที่กำหนดเอง (ตัวอย่างเช่น "ผลิตภัณฑ์"):
$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);
หรือเพิ่มสำหรับเมนูปลั๊กอินที่กำหนดเองของเรา:
// 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);