web-dev-qa-db-ja.com

プラグインのトップレベルメニュー項目の重複したサブメニュー名を削除するにはどうすればいいですか?

私はwordpress用のカスタムプラグインを書きました。

サブメニューをプラグインに追加すると、トップレベルの項目に二重のエントリが表示されます。

enter image description here 

2番目の "TopLevel"メニュー項目を無効にして、次のように表示します。

enter image description here 

それで、トップレベルサブメニューを無効にするにはどうすればいいですか?

3
hitautodestruct

あなたが 'TopLevel'メニューがカスタムページを表すことを望まないならば、あなたは使うことができます:

  add_menu_page( 'TopLevel', 'TopLevel', 'MENU_CAP_LVL', 'MENU_SLUG', 'MENU_CB' );
  add_submenu_page( 'MENU_SLUG', 'SubMenu', 'SubMenu', 'MENU_CAP_LVL', 'SUB_MENU_SLUG', 'SUB_MENU_CB' );
  add_submenu_page( 'MENU_SLUG', 'SubMenu-A', 'SubMenu-A', 'MENU_CAP_LVL', 'SUB_MENU_A_SLUG', 'SUB_MENU_A_CB' );
  remove_submenu_page('MENU_SLUG','MENU_SLUG');

このようにして "TopMenu"をクリックすると、最初の "SubMenu"に進み、 "TopLevel"が重複しないようにします。

別の解決策は、page_slugで使用されているのと同じmenu_slugadd_menu_pagefunction(コールバック)を持つサブメニューエンティティを追加することによって、サブメニュー内の "TopLevel"ラベルの名前を変更することです。

  add_menu_page( 'TopLevel', 'TopLevel', 'MENU_CAP_LVL', 'MENU_SLUG', 'MENU_CB' );
  add_submenu_page( 'MENU_SLUG', 'MyRenamedTopLevelMenu', 'MyRenamedTopLevelMenu', 'MENU_CAP_LVL', 'MENU_SLUG', 'MENU_CB' );
  add_submenu_page( 'MENU_SLUG', 'SubMenu', 'SubMenu', 'MENU_CAP_LVL', 'SUB_MENU_SLUG', 'SUB_MENU_CB' );
6
Ignat B.