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の管理画面をさらに安全かつ効率的に管理しましょう。