【WordPress】指定したユーザーを特定の固定ページのみ編集可能にする方法

WordPressで特定のユーザーに特定の固定ページのみ編集を許可したい場合、どのように実現すれば良いでしょうか?本記事では、ユーザーロールと権限をカスタマイズする方法を中心に、プラグインの使用も含めて解説します。

ユーザーロールと権限の設定

まずは、ユーザーロールをカスタマイズし、特定の固定ページのみを編集できるように設定する方法です。この方法では、カスタムユーザーロールを作成し、特定の固定ページ編集権限を付与します。

カスタムユーザーロールの作成

以下のコードをfunctions.phpファイルに追加することで、新しいユーザーロールを作成します。このロールには、固定ページの編集権限だけが付与されます。

function create_custom_user_role() {
    add_role(
        'custom_editor',
        'Custom Editor',
        array(
            'read'         => true,
            'edit_posts'   => false,
            'edit_pages'   => true,
        )
    );
}
add_action('init', 'create_custom_user_role');

特定の固定ページの編集権限を付与

次に、特定のユーザーに特定の固定ページだけを編集させるように制御します。current_user_can関数を利用し、以下のコードをfunctions.phpに追加します。

function allow_specific_page_editing($caps, $cap, $user_id, $args) {
    $allowed_user_id = 123; // 許可するユーザーID
    $allowed_page_id = 456; // 編集を許可する固定ページのID

    if ($cap === 'edit_page' && $user_id == $allowed_user_id && isset($args[0]) && $args[0] == $allowed_page_id) {
        return array('edit_pages');
    }
    return $caps;
}
add_filter('map_meta_cap', 'allow_specific_page_editing', 10, 4);

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

コードを使いたくない場合や、もっと手軽に設定したい場合は、プラグインを利用する方法もあります。「User Role Editor」プラグインを使用して、特定の固定ページのみ編集可能にする設定を行うことができます。

プラグインのインストールと設定

  1. プラグインのインストール
    WordPress管理画面の「プラグイン」メニューから「User Role Editor」をインストールし、有効化します。
  2. ユーザーロールのカスタマイズ
    Users > User Role Editor から、ユーザーに対して特定の固定ページのみ編集権限を付与するロールをカスタマイズします。

カスタム権限の付与

さらに詳細に権限を制御したい場合は、カスタム権限を追加する方法があります。これにより、特定の固定ページだけに編集権限を付与することが可能です。

カスタム権限の追加

まず、以下のコードをfunctions.phpに追加し、カスタム権限を作成します。

function add_custom_capability() {
    $role = get_role('custom_editor');
    $role->add_cap('edit_custom_page');
}
add_action('admin_init', 'add_custom_capability');

特定の固定ページにカスタム権限を適用

次に、以下のコードをfunctions.phpに追加し、特定の固定ページにのみ編集権限を付与します。

function allow_custom_page_edit($caps, $cap, $user_id, $args) {
    if ($cap === 'edit_post' && $args[0] == 456) { // 固定ページIDを指定
        $caps[] = 'edit_custom_page';
    }
    return $caps;
}
add_filter('map_meta_cap', 'allow_custom_page_edit', 10, 4);

まとめ

WordPressで特定のユーザーが特定の固定ページのみを編集できるようにするには、ユーザーロールと権限のカスタマイズが必要です。この記事では、コードを使った方法とプラグインを利用した方法を紹介しました。プロジェクトの要件に合わせて、最適な方法を選択してください。