Özel Yazı Tipi Menüsünü Başka Bir Özel Yazı Tipi Alt Menüsü Olarak Eklemek Mümkün Mü?


28

Şu anda iki özel yazı tipi kullanan bir wordpress eklentisi geliştiriyorum. Burada bilmek istediğim: Özel bir yazı tipi menüsü başka bir özel yazı tipi alt menüsü olarak eklemek mümkün mü?

Yanıtlar:


59

Evet. Yazı türünüzü kaydettiğinizde, show_in_menugörüntülenmesini istediğiniz sayfaya ayarlamanız gerekir .

Özel bir yazı türünün, Mesajların alt menüsü olarak eklenmesi

Burada "filmler" yazı türünü Mesajlar altındaki alt menüye dahil edilecek şekilde ayarladık.

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

Özel gönderi türüne kayıtlı bir taksonominiz varsa, sayfaya da eklenmesi gerekir.

Gelen add_submenu_page()ilk argüman olarak atamak için sayfası ve son menü sümüklüböcek olduğunu.

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

Özel bir gönderi türünü başka bir özel gönderi tipinin alt menüsü olarak ekleme

Sayfaları başka bir özel yazı tipine eklemek için, yazı türünün sorgu dizesi parametresini sayfa adlarıyla birlikte ekleyin.

CPT Movies ve taksonomisini eklemek için Entertainment post tipinde bulunan Tarz, kodu bu şekilde ayarlayın.

edit.php olur edit.php?post_type=entertainment

edit-tags.php olur 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'); 
}

2
Merhaba teşekkürler. İşe yarıyor. Fakat cpt alt menüsü alt menüsünü kaybetti.
Ari

Cevabımı taksonomileri içerecek şekilde güncelledim.
epilektric

Merhaba teşekkürler! Bunu yapmanın yolunu buldum! Fakat sizinki daha iyi bir sonuç verecektir!
Ari,

show_in_menunitelik, benim için çalıştı olmadı.
Francisco Corrales Morales

Tekrarladığım için üzgünüm. Alt menü ve paretn menüsünün vurgulanması için WP'ye daha fazla bilgi vermeniz gerekir. Tamam, 'show_in_menu' parametresi, 'my_post_type' ekranda olduğunda alt menünün geçerli / vurgulanmasını sağlar. Şimdi, üst menüyü vurgulayacak başka bir eylem daha eklememiz gerekiyor. Bunu deneyebilirsiniz: add_filter ('parent_file', 'menu_highlight')); function menu_highlight ($ parent_file) {global $ eklenti_sayfa, $ post_type; if ('my_post_type' == $ post_type) {$ plugin_page = 'edit.php? post_type = my_post_type'; // alt menü kanca adı} return $ parent_file; }
TomeeNS

6

Özel yazı tipimiz:

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

Onu mevcut Özel Posta Türü (örneğin, "ürün") için ekleyin:

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

Veya özel eklenti menümüz için ekleyin:

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

Teşekkürler! Benim için faydalı.
NSukonny
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.