カスタム投稿タイプによって親ページ、子ページがあるようなサイトで、
複数ユーザーにログインして運用するものを作成していました。
当然ながらログインしたユーザーは自分の投稿しか編集できないようにしたいのですが、
カスタム投稿タイプで子ページを追加しようとすると、
管理画面の属性の親のリストボックスにでてくるページ一覧には、
すべてのユーザーのリストが表示されてしまいます。
調べに調べた結果、my_page_attributes_dropdown_pages_argsに
フィルターフックを使用して解決しました。
function my_page_attributes_dropdown_pages_args($args) {
global $post_type, $user_ID;
//カスタム投稿タイプがxxxxxで、かつadminユーザーでなければ
if ($post_type == 'xxxxx' && !current_user_can('administrator')) {
$args['depth'] = '1';
$args['authors'] = $user_ID;
$args['show_option_none'] = '';
} else {
//他の投稿タイプ、adminはすべて表示
$args['depth'] = '0';
}
return $args;
}
add_filter('page_attributes_dropdown_pages_args', 'my_page_attributes_dropdown_pages_args');
厳密にはwp_dropdown_pagesのパラメータには、authorsは非推奨のようですが、
うまく動いてくれたようで良かったです。
参考サイト
http://ounziw.com/2012/05/24/post_status/
http://wpdocs.sourceforge.jp/テンプレートタグ/wp_dropdown_pages
↧
[WordPress] 管理画面の属性の親にログインユーザーの記事だけ表示
↧