どのように私は異なるユーザーロールに異なる管理者メニューを表示することができます。
私は新しいユーザーを作成する必要がありますホストのみのユーザー
私はこれがデフォルトのユーザロールのためのデフォルトの管理者メニューリストであるのを見ました
これらのメニューがどのWordPressのPHPファイルにコードで割り当てられているかはどこでわかりますか?コードでメニューを上書きできますか?
メニュー項目は機能にバインドされています。ここで 良い概要を見つけることができます 。たとえば、edit_posts
という機能がない場合、メニュー項目 "投稿"は表示されません。
メニュー項目はCapabilitesにどのように結び付けられていますか。一般的に言って、あなたがメニュー項目を登録する場合、 add_menu_page()
または add_submenu_page()
あなたはWordPressにこのページにアクセスしてメニューに表示できるユーザーに指示する機能を割り当てる必要があります。
デフォルトのメニュー項目に縛られている機能をさらに深く掘り下げたい場合は、ソースコードを参照することができます。
この小さなスクリプトを使用することもできます。これにより、現在のメニューの概要と添付されている機能を確認できます。それは開発上の理由でのみ使用されるべきであり、確かに、それは改善されることができます、しかしあなたは一般的な考えを得ます:
add_action( 'in_admin_footer', function() {
global $menu, $submenu;
echo '<p>Menu:</p><table class="table widefat">';
echo '<tr><th>Name</th><th>Slug</th><th>Capability</th>';
foreach ( $menu as $key => $item ) {
echo '<tr><td>' . esc_html( $item[0] ) . '</td><td>' . esc_html( $item[2] ) . '</td><td><td>' . esc_html( $item[1] ) . '</td><td></tr>';
}
echo '</table>';
echo '<p>Submenu:</p><table class="table widefat">';
echo '<tr><th>Name</th><th>Slug</th><th>Capability</th>';
foreach ( $submenu as $index => $subsub ) {
foreach ( $subsub as $key => $item ) {
echo '<tr><td>' . esc_html( $item[0] ) . '</td><td>' . esc_html( $item[2] ) . '</td><td><td>' . esc_html( $item[1] ) . '</td><td></tr>';
}
}
echo '</table>';
});
そのため、新しいユーザーロールを作成した場合は、それらに機能を割り当てることができ、それによって、特定のユーザーロールに[投稿の編集]メニュー項目を表示するかどうかを決定できます。あなたは WordPress Codex でユーザーロールと機能を追加するための詳細な説明を見つけることができます。
特定のメニュー項目を削除したいが、それでもユーザーに主要な機能を付与したい場合は、 remove_menu_page()
を使用できます。したがって、削除したいメニュー項目のスラッグを知る必要があります。この例では、メニューから "Plugins"項目を削除します。
add_action( 'admin_menu', function(){
remove_menu_page( 'plugins.php' );
});