Apakah Mungkin Untuk Menambahkan Menu Jenis Posting Kustom Sebagai Sub Menu Jenis Posting Kustom Lainnya

28

Saat ini saya sedang mengembangkan plugin wordpress yang menggunakan dua jenis posting kustom. Apa yang ingin saya ketahui di sini: apakah mungkin untuk menambahkan menu jenis posting kustom sebagai sub menu jenis posting kustom lainnya?

Ari
sumber

Jawaban:

59

Iya nih. Ketika Anda mendaftarkan jenis posting Anda, Anda perlu mengatur show_in_menuke halaman yang Anda inginkan ditampilkan.

Menambahkan jenis posting khusus sebagai sub-menu Posting

Di sini kita mengatur jenis posting "film" untuk dimasukkan dalam sub-menu di bawah Posting.

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);

Jika Anda memiliki taksonomi terdaftar untuk jenis pos kustom itu harus ditambahkan ke halaman juga.

Dalam add_submenu_page()argumen pertama adalah halaman untuk menetapkannya dan yang terakhir adalah menu siput.

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'); 
}  

Menambahkan jenis posting khusus sebagai sub-menu dari jenis posting kustom lain

Untuk menambahkan halaman ke jenis posting kustom lain termasuk parameter string kueri tipe posting bersama dengan nama halaman.

Untuk menambahkan Film CPT dan Gen taksonomi di bawah jenis posting Hiburan sesuaikan kode seperti ini.

edit.php menjadi edit.php?post_type=entertainment

edit-tags.php menjadi 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'); 
}
epilektrik
sumber
2
Hai terima kasih Berhasil. Tetapi sub menu cpt kehilangan submenu-nya.
Ari
Saya telah memperbarui jawaban saya dengan cara memasukkan taksonomi.
epilektric
Hai, terima kasih! Saya telah menemukan cara untuk melakukannya! Tetapi mungkin milik Anda akan memberikan hasil yang lebih baik!
Ari
yang show_in_menuatribut, tidak bekerja untuk saya.
Francisco Corrales Morales
Maaf sudah mengulangi. Agar menu submenu dan paretn tetap tersorot, Anda perlu memberi WP beberapa informasi lebih lanjut. Oke, parameter 'show_in_menu' membuat submenu menjadi aktual / disorot ketika 'my_post_type' ada di layar. Sekarang, kita juga perlu menambahkan tindakan lain, yang akan menyoroti menu induk. Anda dapat mencoba ini: 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'; // nama kait submenu} return $ parent_file; }
TomeeNS
6

Jenis pos khusus kami:

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

Tambahkan dia untuk Jenis Pos Kustom yang ada ("produk" misalnya):

$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);

Atau tambahkan untuk menu plugin khusus kami:

// 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);
ConConovaloff
sumber
Terima kasih! Ini membantu saya.
NSukonny