ップロードした画像は、アップロードした投稿者本人しか見えないようにする
WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。
管理者ではなく、参加するメンバーが記事を投稿した場合、誰でも全員の投稿を見れるようになっているのをカスタマイズして、自分の投稿のみ表示するようにした。
・投稿者の「投稿画面」では、自分の投稿のみ表示させる方法で紹介した。
でも、そのままでは、アップロードした画像などのメディアが全て見えてしまうので、そこを修正。
↓↓↓
functions.php へ記述
//upした画像は自分のみ表示
function show_only_authorimage( $where ){
global $current_user;
if(is_admin()){ //管理画面
if(current_user_can('author') ){ //投稿者権限の場合のみ
if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
$where .= ' AND post_author='.$current_user->data->ID; //UPした人のIDと今のIDが同じ場合のみ表示
}}}
return $where;
}
add_filter( 'posts_where', 'show_only_authorimage' );
これで自分でアップロードした画像のみ表示される(上の例では投稿者権限の場合のみ)。
合わせて変更が必要なカスタマイズ案
・投稿者の「投稿画面」では、自分の投稿のみ表示させる方法
・自分のもののみの投稿数を取得して、記事数に代入
こちらも参照。
投稿者の「投稿」では、自分の投稿のみ表示させる(他ユーザーの投稿は管理画面の投稿一覧では見えない)
WordPressのSNSプラグイン、BuddyPressを導入すると不特定多数のメンバーが参加することになる。
管理者ではなく、参加するメンバーが記事を投稿した場合、誰でも全員の投稿を見れるようになっているし、誰でも編集ができる。
↓↓↓
functions.php へ記述
pre_get_postで、投稿一覧を取得する時に、今ログインしている、ユーザーの投稿だけを格納するように変更する。
//投稿一覧に自分の投稿のみ表示させる
function pre_get_author_posts( $query ) {
if ( is_admin() && !current_user_can('administrator') && $query->is_main_query() //管理画面で、管理者ではない場合
&& ( !isset($_GET['author']) || $_GET['author'] == get_current_user_id() ) ) {
$query->set( 'author', get_current_user_id() ); //今の著者のものだけを格納する
unset($_GET['author']);
}
}
add_action( 'pre_get_posts', 'pre_get_author_posts' );
上記の例だと、administrator は除外していて、全員の投稿を見ることができる。
編集者の場合だと、 editor など、適宜変更可能。
合わせて変更が必要なカスタマイズ案
・自分のもののみの投稿数を取得して、記事数に代入
・upした画像は投稿者本人しか見えないようにする
こちらも参照。
明日試したくなるカスタマイズ、ネットな日々に役立つ小技と、たまに旅行の妄想と。