WordPressでは、特定の固定ページのみを特定のユーザーに編集させたい場合、プラグインを使用せずにテーマのfunctions.phpファイルにカスタムコードを追加することで実現できます。この記事では、その具体的な手順を解説します。
functions.phpファイルの編集
まず、WordPressテーマのfunctions.phpファイルを開きます。このファイルにカスタムコードを追加することで、固定ページの編集権限を制御します。
カスタムコードの追加
次に、以下のコードをfunctions.phpファイルに追加します。このコードは、特定の固定ページの編集を特定のユーザーにのみ許可するものです。
function restrict_page_editing($allcaps, $cap, $args) {
// 編集を許可する特定のユーザーID
$allowed_user_ids = array(1, 2, 3); // 例: ユーザーID 1, 2, 3 のみ許可
// 編集を許可する特定の固定ページID
$allowed_page_ids = array(10, 20, 30); // 例: 固定ページID 10, 20, 30 のみ許可
// 現在のユーザーIDを取得
$current_user_id = get_current_user_id();
// 編集しようとしている投稿のIDを取得
$post_id = isset($args[2]) ? $args[2] : 0;
// 投稿のタイプを取得
$post_type = get_post_type($post_id);
// 固定ページ編集の権限を制限
if ($post_type == 'page' && in_array($post_id, $allowed_page_ids) && in_array($current_user_id, $allowed_user_ids)) {
// 権限を与える
$allcaps['edit_post'] = true;
$allcaps['delete_post'] = true;
} elseif ($post_type == 'page') {
// 権限を取り上げる
$allcaps['edit_post'] = false;
$allcaps['delete_post'] = false;
}
return $allcaps;
}
add_filter('user_has_cap', 'restrict_page_editing', 10, 3);
コードの解説
- ユーザーIDとページIDの設定
$allowed_user_ids配列には、編集を許可するユーザーのIDを設定します。
$allowed_page_ids配列には、編集を許可する固定ページのIDを設定します。 - ユーザーとページのチェック
現在のユーザーIDと編集しようとしている固定ページのIDを取得し、これらが許可されたIDリストに含まれているかをチェックします。 - 権限の設定
許可されたユーザーが許可されたページを編集しようとする場合、edit_postおよびdelete_post権限を与えます。それ以外の場合は、これらの権限を取り上げます。
許可されたユーザーがすべての固定ページを編集可能にする
以下のコードを追加します。このコードは、特定のユーザーに対してすべての固定ページの編集を許可するものです。
function allow_user_edit_all_pages($allcaps, $cap, $args) {
// 編集を許可する特定のユーザーID
$allowed_user_ids = array(1, 2, 3); // 例: ユーザーID 1, 2, 3 のみ許可
// 現在のユーザーIDを取得
$current_user_id = get_current_user_id();
// 投稿のタイプを取得
$post_type = isset($args[2]) ? get_post_type($args[2]) : '';
// 固定ページ編集の権限を設定
if ($post_type == 'page' && in_array($current_user_id, $allowed_user_ids)) {
// 権限を与える
$allcaps['edit_pages'] = true;
$allcaps['edit_others_pages'] = true;
$allcaps['delete_pages'] = true;
$allcaps['delete_others_pages'] = true;
}
return $allcaps;
}
add_filter('user_has_cap', 'allow_user_edit_all_pages', 10, 3);
注意事項
カスタムコードを追加する際は、必ず事前にバックアップを取ってから行ってください。また、ユーザーIDや固定ページIDは実際のものに合わせて調整してください。