これが現在の状況です。
私の要求は以下の通りです。
私はサブメニューページに親スラッグをつけることを試みました。もちろん、これはトップレベルのメニュー項目の下に期待通りに表示されるようにします。その後、remove_submenu_pageを使用して、サブメニュー項目を削除しようとしました。ただし、これでサブメニューページ全体が削除されるので、問題は解決しません。
トップレベルのメニュー項目は、アクセスされているページがその下にあることを知っている必要があるので、私は論理的にやるべきことは、親スラッグを与えることです。問題は、サブメニューページのメニュー項目が表示されていないことです。メニュー項目を直接扱う関数が見つかりません。
これは正しいアプローチですか、それとももっと良い選択肢がありますか?必要なことを実行するために利用できるアクション/フィルター/フックはありますか?
#1を編集する:
さらに研究/テストを行いました。 add_submenu_page呼び出しでmenu_titleパラメータをnullまたは ''に設定すると、タイトルは表示されません。ただし、サブメニュー項目を含む<li>はまだ存在しており、対話することができます。多数のサブメニューページがある場合(私の場合のように)、空の<li>要素が追加されてメニュー上に長い空白の領域が作成されます。これは理想からは程遠いので、私はまだ解決策を探しています。
編集#2: @s_ha_dumからのコメントの後に$ submenuグローバルを操作しようとした。ただし、ページに関連するメニューセクションを削除すると、remove_submenu_pageと同様にそのページが削除され、そのページにアクセスできなくなります。
それはちょっと遅い答えであり、@ Jayがこれを整理したかどうかはわかりませんが、同じ問題を抱えている人には、これを修正する方法があります。
function my_admin_menu() {
add_menu_page(
'Page title',
'Menu title',
'manage_options',
'my_page',
null,
null,
99
);
add_submenu_page(
'my_page',
'Subpage 1 title',
'Subpage 1 menu title',
'manage_options',
'my_subpage_1',
null
);
add_submenu_page(
'my_page',
'Subpage 2 title',
'Subpage 2 menu title',
'manage_options',
'my_subpage_2',
null
);
}
add_action( 'admin_menu', 'my_admin_menu' ) );
function my_admin_head() {
remove_submenu_page( 'my_page', 'my_subpage_1' );
}
add_action( 'admin_head', 'my_admin_head' );
remove_submenu_page のコーデックスを参照してください。