ワードプレスのメンバーとして寄稿者や投稿者の権限で登録する場合がありますが、記事に貼り付ける画像としてアップロードしたものが、他の人にも見えたりすると結構面倒。
間違って削除されたりするのを避けるため、寄稿者や投稿者には自分がアップロードした画像(メディア)だけが見える、としたいところです。
これにはちょっとしたコードを追加するだけでできるので、是非試してみてください。
権限が「寄稿者」の場合
登録したメンバーの権限が、寄稿者、投稿者と混ざっている場合があると思いますが、まずは寄稿者の場合から。
以下のコードを追加すると、寄稿者であるメンバーAさんがいたとして、Aさんがログインして画像をアップロードすると、その画像はAさんのみに表示されます。(逆にAさんには他の人がアップロードした画像は表示されない)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//自分がアップした画像けが表示(寄稿者) function show_only_writer_image( $where ){ global $current_user; if(is_admin()){ if(current_user_can('contributor')){ if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){ $where .= ' AND post_author='.$current_user->data->ID; } } } return $where; } |
このコードは、以下を行ってます。
- 1)ログインしている場合で、
(is_admin()) - 2)権限が「寄稿者」の場合
(current_user_can( ‘contributor’ )) - 3)その人がアップロードした画像だけをピックアップ
($where .= ' AND post_author='.$current_user->data->ID;)
権限が「投稿者」の場合
続いてメンバーが「投稿者」の場合、同じことをするには以下のコードでOK.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//自分がアップした画像けが表示(投稿者) function show_only_writer_image( $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; } } } return $where; } add_filter( 'posts_where', 'show_only_writer_image' ); |
このコードは、以下を行ってます。
- 1)ログインしている場合で、
(is_admin()) - 2)権限が「投稿者」の場合
(current_user_can('author')) - 3)その人がアップロードした画像だけをピックアップ
($where .= ' AND post_author='.$current_user->data->ID;)
権限が「寄稿者」の場合との違いは2)だけ。
「寄稿者」「投稿者」両方の場合
では、権限が「寄稿者」「投稿者」と混ざっていて、その人がアップロードした画像はその人だけに表示する、としたい場合のコードは以下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//自分がアップした画像けが表示(寄稿者・投稿者) function show_only_writer_image( $where ){ global $current_user; if(is_admin()){ if(current_user_can('author') or current_user_can('contributor')){ if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){ $where .= ' AND post_author='.$current_user->data->ID; } } } return $where; } add_filter( 'posts_where', 'show_only_writer_image' ); |
このコードは、以下を行ってます。
- 1)ログインしている場合で、
(is_admin()) - 2)権限が「寄稿者」または「投稿者」の場合
(current_user_can('author') or current_user_can('contributor')) - 3)その人がアップロードした画像だけをピックアップ
($where .= ' AND post_author='.$current_user->data->ID;)
上で見た「寄稿者」のみを対象とした場合と「投稿者」のみを対象とした場合との違いは、2)だけ。
実際にコードを追加してみる
上で見たコードは 「テーマのための関数」(functions.php)に追加します。
- ①、②:「外観」から「テーマエディター」を選択
- ③:「テーマのための関数」(functions.php)を選択
- ④:必要なコードをコピペ
- ⑤:「ファイルを更新」をクリック!
以上で終わり!
権限が「投稿者」や「寄稿者」の仮のメンバーを登録したりして、そのメンバーではその人がアップロードした画像だけが表示されるか確認してみてくださいね。
functions.php の編集は、間違うとブログが表示できなくなるなど、重大な問題にもつながります。できればローカル環境やテストサイトで一度問題ないか試してみると良いです。
参考)
ワードプレスをパソコン上で動かす!XAMPPのインストール方法を詳しく解説
今回のポイント
投稿一覧もそうですが、複数人でブログを運営すると、いろいろとごちゃごちゃしがちです。
アップロードする画像もその人が使っているものはその人だけに表示される、とすると、見分けがつきやすいし、他の画像を誤って削除してしまう、などもなくなり安心ですね。
ブログを加速させる、収益を大きくしていく、という点では外注化も必須と言ってもよい位置づけであり、外注化を上手に活用するために、こうした点にも気を付けて行くといですよ。
また、ネットビジネスを更に拡大させたい、逆に一から順を追って生美治したい、などでは、以下のメルマガにも是非登録してみてくださいね。