【WordPress】管理画面のメニューから固定ページを非表示にする方法

WordPressサイトを運営する際、特定のユーザー権限に基づいて固定ページのメニューを非表示にすることは、セキュリティやユーザー体験の向上に役立ちます。この記事では、管理者以外のユーザーから固定ページをメニューから削除する方法について詳しく説明します。

スポンサーリンク

固定ページメニュー項目の削除方法

管理者以外のユーザーに固定ページメニューを表示させたくない場合、以下のコードをテーマの functions.php ファイルに追加します。

function remove_pages_menu() {
    if (!current_user_can('administrator')) {  // 管理者以外のユーザーに適用
        remove_menu_page('edit.php?post_type=page');  // 固定ページメニューを削除
    }
}
add_action('admin_menu', 'remove_pages_menu', 999);

このコードにより、管理者以外のユーザーには固定ページメニューが表示されなくなります。

固定ページサブメニュー項目の削除方法

特定の固定ページのサブメニュー項目を非表示にしたい場合は、以下のコードを使用します。

function remove_specific_pages_menu() {
    if (!current_user_can('administrator')) {  // 管理者以外のユーザーに適用
        global $submenu;
        unset($submenu['edit.php?post_type=page'][10]);  // 固定ページ追加
        unset($submenu['edit.php?post_type=page'][15]);  // 固定ページのカテゴリー
        // 他のサブメニュー項目を非表示にする場合は、上記のように unset を使用
    }
}
add_action('admin_menu', 'remove_specific_pages_menu', 999);

これにより、管理者以外のユーザーには特定のサブメニュー項目が表示されなくなります。

特定のユーザー権限に基づいて固定ページメニューを削除する方法

特定のユーザー権限に基づいてメニューを非表示にする場合、以下のコードを使用します。

function custom_remove_pages_menu() {
    if (!current_user_can('edit_others_posts')) {  // 編集者以上の権限を持つユーザーに適用
        remove_menu_page('edit.php?post_type=page');  // 固定ページメニューを削除
    }
}
add_action('admin_menu', 'custom_remove_pages_menu', 999);

このコードは、編集者以上の権限を持つユーザーにのみ固定ページメニューを表示します。

よくある質問(FAQ)

Q. 管理画面のサイドメニューにカスタムメニュー項目を追加するには?
A. add_menu_page()またはadd_submenu_page()をadmin_menuアクションフック内で呼び出します。メニュー名・スラッグ・コールバック関数・アイコン・位置を指定します。
Q. 固定ページの編集画面への直接リンクを管理メニューに追加するには?
A. add_submenu_page()でページのURLとして固定ページの編集URL(post.php?post=ID&action=edit)を指定します。コールバック関数は不要な場合はnullを渡せます。
Q. 管理メニューを特定のロールのみに表示するには?
A. add_menu_page()の第6引数(capability)に必要な権限を指定します。例えばedit_pagesを指定すると固定ページを編集できるロール以上のみに表示されます。

まとめ

これらのカスタムコードを使用することで、WordPressの管理画面から特定の固定ページを非表示にすることができます。ユーザーの権限に基づいてメニューを調整することで、管理画面の使いやすさとセキュリティを向上させることができます。必要に応じて、コードをカスタマイズしてみてください。