web-dev-qa-db-ja.com

add_submenu_pageが機能しない

このようなカスタムメニューを作成するプラグインを作成しました。

    add_menu_page( 'Wholesale Pricing', 'Wholesale', 'manage_options', 'woo-wholesale', 'woo_wholesale_page_call'); 

この下にサブページアイテムを追加しようとしています。私はコーデックスを読み、思いついた:

add_submenu_page( 'woo-wholesale', 'Registrations', 'Registrations', 'manage_options', 'woo-wholesale-registrations', 'wwpr_page_call' ); 

サブメニュー項目が表示されていないので、これは正しくないと思います。誰もがこれに光を当てることはできますか?

3
danyo

add_actionフックが admin_menu に設定されていることを確認してください。

これがサンプルコードです。

add_action('admin_menu', 'wpse149688');
function wpse149688(){
    add_menu_page( 'Wholesale Pricing', 'Wholesale', 'manage_options', 'woo-wholesale', 'woo_wholesale_page_call');
    add_submenu_page( 'woo-wholesale', 'Registrations', 'Registrations', 'manage_options', 'woo-wholesale-registrations', 'wwpr_page_call' ); 
}

ログインしたユーザーがこのメニューを表示できるかどうかも確認してください。このメニューはmanage_options capability を使って設定されます。

7
Abhineet Verma

OPと同じ間違いをしたのですが、直感的に理解できないためです。 管理メニュー のコーデックスを読むことで、私は答えを発見しました。

問題は(とにかく)add_submenu_page(...)の呼び出しで$parent_slugパラメータを編集することでした。

したがって、OPの場合は、次のように変更します。

add_submenu_page( 
    'woo-wholesale', 
    'Registrations', 
    'Registrations', 
    'manage_options', 
    'woo-wholesale-registrations', 
    'wwpr_page_call' 
);

に:

add_submenu_page( 
    'edit.php?post_type=woo-wholesale', 
    'Registrations', 
    'Registrations', 
    'manage_options', 
    'woo-wholesale-registrations', 
    'wwpr_page_call' 
);
2