【WordPress】管理者権限以外のユーザーは固定ページを編集できないようにする方法

WordPressのサイト運営において、特定のユーザーに固定ページの編集を制限したい場合があります。特に、誤って重要なページが編集されることを防ぎたい場合に有効です。この記事では、管理者権限以外のユーザーが固定ページを編集できないようにする方法を紹介します。

スポンサーリンク

コードを使った方法

WordPressのテーマの functions.php ファイルに以下のコードを追加することで、管理者以外のユーザーが固定ページを編集できないように設定できます。

function restrict_page_editing() {
    if (!current_user_can('administrator')) {
        global $pagenow;
        if ($pagenow == 'post.php' || $pagenow == 'post-new.php') {
            $post_type = get_post_type($_GET['post']);
            if ($post_type == 'page') {
                wp_redirect(admin_url());
                exit;
            }
        }
    }
}
add_action('admin_init', 'restrict_page_editing');

このコードは、管理者権限を持たないユーザーが固定ページの編集画面にアクセスしようとすると、ダッシュボードのトップページにリダイレクトします。

プラグインを使用する方法

コードを直接編集するのが不安な場合は、プラグインを使用して同様の制限を設定することもできます。以下は、人気のある権限管理プラグインです。

User Role Editor
このプラグインを使用すると、ユーザーの権限を詳細にカスタマイズできます。管理者権限以外のユーザーに対して「固定ページを編集する」権限を取り除くことができます。

  1. プラグインをインストールし、有効化します。
  2. WordPressのダッシュボードから「ユーザー > User Role Editor」を開きます。
  3. 編集したいユーザーロールを選択し、「固定ページを編集」の権限をオフにします。

よくある質問(FAQ)

Q. 管理者以外のユーザーが固定ページを編集できないようにする方法は?
A. user_has_capフィルターを使い、非管理者ユーザーのedit_pagesケイパビリティをfalseに設定します。または edit_page / edit_others_pages ケイパビリティを剥奪するremove_role_capability的な処理も有効です。
Q. エディターに投稿編集権限は残しつつ固定ページだけ制限するには?
A. map_meta_capフィルターでedit_pageケイパビリティを処理し、$post->post_type === ‘page’の場合にcurrent_user_can(‘manage_options’)をチェックして管理者以外はfalseを返します。
Q. この設定後、制限されたユーザーが固定ページ編集URLに直接アクセスするとどうなりますか?
A. WordPressの権限チェックにより「申し訳ありませんが、このページにアクセスする権限がありません」というエラーページが表示されます。UIの非表示だけでなく実際のアクセスも制限されます。

まとめ

管理者権限以外のユーザーが固定ページを編集できないようにする方法として、コードを追加する方法とプラグインを使用する方法があります。運営しているサイトに最適な方法を選んで、安全にページを管理しましょう。