固定ページの管理権限
WordPressで、固定ページの管理権限をどうにかしたいときってありますよね。
固定ページ絡みの権限について、UserRoleEditorというプラグインと、page_attributes_dropdown_pages_argsフィルターフックについて書きました。
目次
というあたりについて備忘録です。
自分でつくった固定ページだけを編集できるようにする
プラグインを使うのが便利です。
WordPress プラグイン User Role Editor
バナーというかイメージ画像の仮面が怖いんですが、とても便利なプラグインです。
プラグインの詳しい使い方はいろいろと調べていただければと思いますが、ここでは「自分で作成した固定ページだけを編集できる権限」を作成する方法を紹介します。
- プラグインをインストールして有効化
- ユーザー → User Role Editor の管理画面
- ロールを作成して(仮に「test_user」とします)
- 権限にチェックを入れる
- 「自分で作ったページのみを編集できる」ようにするための最低限必要な権限は以下のとおり。
以下の項目にチェックをいれます。
delete_private_pages、delete_published_pages、edit_pages、edit_private_pages、edit_published_pages、publish_pages、read_private_pages、upload_files
画面だとこのようになります。
あとは、ここで設定したロールをユーザに結びつければ、自分で作った固定ページのみを編集できるユーザができあがります。
「親ページ」を、自分で作った固定ページだけに絞る方法
固定ページを作成・編集したりするときに「親ページ」も、自分が作ったページだけにしたい。ということありますよね。
今回は、page_attributes_dropdown_pages_argsフィルタを使いました。
サンプルコードです。(仮に対象とする権限の名前を「test_user」とした場合)
function my_dropdown_pages_args($dropdown_args) {
$user_info=wp_get_current_user();//ログインユーザ情報を取得
if(in_array('test_user',$user_info->roles)){//’test_user’ロールの場合に以下を実行する
//自分が作成したページを取得
$pages=get_pages(array(
'authors'=>$user_info->ID,
));
$page_ids=array_map(function($p){
return $p->ID;
},$pages);//ページのIDを配列で取得
$dropdown_args['include']=$page_ids;//ドロップダウンリストに表示するIDを設定
}
return $dropdown_args;
}
add_filter('page_attributes_dropdown_pages_args','my_dropdown_pages_args');
内容について解説
- 「test_user」は、この処理の対象とするロール名を入れてください。(前項で作成したロールの場合はそのロールIDを指定してください)
- page_attributes_dropdown_pages_args は、親ページ設定のドロップダウンリストを作成するときに呼ばれるフィルターです。ここにフックをかけて設定します。
- フィルターの内容は「$dropdown_args」という配列を設定します。これの内容でドロップダウンリストの内容が決まります。
- 「$dropdown_args」は、wp_dropdown_pagesという関数をつかってドロップダウンリストを生成します。
- なので「$dropdown_args」の内容は、wp_dropdown_pagesの引数の項を参考にしてください。
- 今回は$dropdown_args['include']に値を設定しましたが、Codexにある通り実は推奨パラメータではありません。(使いやすかったので選択しましたが、利用する際にはご承知おきください)
参考サイト
WordPressの固定ページなどで親選択のリストをカスタマイズ
wp_dropdown_pages
page_attributes_dropdown_pages_args