【WordPress】管理者権限以外のユーザーからメニューの固定ページ編集を削除する方法

WordPressサイトを運営していると、特定のユーザーに対して機能制限をかけたい場合があります。たとえば、管理者権限を持たないユーザーに固定ページの編集をさせたくない場合、メニューからその編集オプションを削除することで対応できます。本記事では、functions.phpファイルにコードを追加することで、管理者以外のユーザーに対して固定ページの編集を制限する方法を紹介します。

functions.phpファイルにコードを追加する

まず、テーマフォルダ内にあるfunctions.phpファイルを開き、以下のコードを追加します。このコードは、管理者権限を持たないユーザーに対して固定ページの編集メニューを非表示にします。

function remove_menu_pages_for_non_admins() {
    // 現在のユーザーが管理者でない場合
    if (!current_user_can('administrator')) {
        // 固定ページの編集をメニューから削除
        remove_menu_page('edit.php?post_type=page');
    }
}
add_action('admin_menu', 'remove_menu_pages_for_non_admins', 999);

コードの動作を確認する

コードを保存したら、管理者以外のユーザーとしてログインし、メニューに固定ページの編集オプションが表示されていないことを確認してください。このコードによって、管理者以外のユーザーは固定ページの編集ができなくなります。

特定のユーザーロールに対して制限をかける

もし、特定のユーザーロールに対してのみ固定ページの編集を制限したい場合は、次のようにコードをカスタマイズします。

function remove_menu_pages_for_specific_roles() {
    // 編集を制限するユーザーロールを配列で指定
    $roles_to_restrict = ['editor', 'author'];

    // 現在のユーザーのロールを取得
    $user = wp_get_current_user();
    
    // 指定されたロールが現在のユーザーのロールに含まれている場合
    if (array_intersect($roles_to_restrict, $user->roles)) {
        // 固定ページの編集をメニューから削除
        remove_menu_page('edit.php?post_type=page');
    }
}
add_action('admin_menu', 'remove_menu_pages_for_specific_roles', 999);

このコードでは、editorやauthorといったロールのユーザーに対してのみ固定ページの編集メニューを非表示にすることができます。

まとめ

管理者権限以外のユーザーが誤って固定ページを編集してしまうリスクを避けるために、メニューから編集オプションを削除することは有効な手段です。必要に応じて、特定のユーザーロールに対してのみこの制限を適用することもできます。今回紹介した方法を活用して、WordPressの管理画面をさらに安全かつ効率的に管理しましょう。