2014-09-27 36 views
0

自定義插件菜單結構:

測試插件

儀表板

禮品


我有自定義帖子類型突出顯示問題,如果您點擊Add [post type]鏈接,它將默認爲頂層菜單項,如果它在菜單中找不到Add New [post type]項目。請參閱以下鏈接澄清:https://core.trac.wordpress.org/ticket/24137

問題被固定在幾個月前,但是,當我走進wp-admin/post-new.php傾倒了什麼$_registered_pages載我發現了一些不一致的地方。我用WooCommerce作爲比較的手段。這是什麼樣的$_registered_pages包含轉儲:

array(16) { ["admin_page_testplugin"]=> bool(true) ["toplevel_page_woocommerce"]=> bool(true) ["product_page_product_attributes"]=> bool(true) ["woocommerce_page_edit?post_type=shop_order"]=> bool(true) ["woocommerce_page_edit?post_type=shop_coupon"]=> bool(true) ["admin_page_edit?post_type=gifts"]=> bool(true) ["users_page_users-user-role-editor"]=> bool(true) ["settings_page_settings-user-role-editor"]=> bool(true) ["toplevel_page_testplugin"]=> bool(true) ["appearance_page_custom-header"]=> bool(true) ["appearance_page_custom-background"]=> bool(true) ["woocommerce_page_wc-reports"]=> bool(true) ["woocommerce_page_wc-settings"]=> bool(true) ["woocommerce_page_wc-status"]=> bool(true) ["woocommerce_page_wc-addons"]=> bool(true) ["appearance_page_theme-editor"]=> bool(true) } 

我注意到,它輸出woocommerce_page_edit爲WooCommerce但admin_page_edit對我自己的自定義後類型(禮品)......即使它應該出來爲testplugin_page_edit?post_type=gifts。這意味着當從wp-admin/post-new.php運行以下代碼get_plugin_page_hookname("edit.php?post_type=$post_type", $post_type_object->show_in_menu)它永遠不會找到它,因爲它會尋找testplugin_page_edit?post_type=gifts應該,但不幸的是不存在。

非常感謝您的幫助。

回答

0

經過大約一天的試驗和玩弄代碼,似乎是在add_action函數上設置了一個特定的priority。爲了將來的參考,對於任何人可能想知道的相同,這裏是完整的代碼。

<?php defined('ABSPATH') or exit; 
/** 
* Plugin Name: Testa 
* Description: Testing 123 
* Version: 1.0 
*/ 
function menus() { 
    add_menu_page('Testa', 'Testa', 'manage_options', 'testa', null); 
    add_submenu_page('testa', 'Dashboard', 'Dashboard', 'manage_options', 'testa', null, null, 9); 
} 

add_action('admin_menu', 'menus', 9); 

function post_types() { 
    register_post_type('gifts', array(
     'labels' => array(
      'name'     => 'Gifts', 
      'singular_name'   => 'Gift', 
      'add_new'    => 'Add Gift', 
      'add_new_item'   => 'Add New Gift', 
      'edit'     => 'Edit', 
      'edit_item'    => 'Edit Gift', 
      'new_item'    => 'New Gift', 
      'view'     => 'View Gift', 
      'view_item'    => 'View Gift', 
      'search_items'   => 'Search Gifts', 
      'not_found'    => 'No gifts found.', 
      'not_found_in_trash' => 'No gifts found in Trash.', 
      'parent'    => 'Parent Gifts', 
      'menu_name'    => 'Gifts', 
     ), 
     // front-end 
     'public'    => false, 
     'has_archive'   => false, 
     'publicly_queryable' => false, 

     // admin 
     'capability_type'  => 'post', 
     'query_var'    => true, 
     'show_in_menu'   => 'testa', 
     'show_ui'    => true, 
    )); 
} 

add_action('init', 'post_types', 5);