2012-07-08

[WordPress] 管理画面の属性の親にログインユーザーの記事だけ表示


カスタム投稿タイプによって親ページ、子ページがあるようなサイトで、
複数ユーザーにログインして運用するものを作成していました。

当然ながらログインしたユーザーは自分の投稿しか編集できないようにしたいのですが、
カスタム投稿タイプで子ページを追加しようとすると、
管理画面の属性の親のリストボックスにでてくるページ一覧には、
すべてのユーザーのリストが表示されてしまいます。


調べに調べた結果、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

Comment:

Trackback URL: