婚活プレスのように、たくさんのライターの方々が投稿可能なサイトを作るとき、WordPressの寄稿者という権限でユーザーを作り、ライターの方にログインしてもらうのが普通だと思います。
しかし、WordPressのデフォルトの寄稿者権限だと、他のライターが書いた投稿のタイトルやカテゴリーなどの情報が閲覧できてしまいます。
しかも、公開された情報だけでなく、下書き保存された情報も閲覧できてしまうんですね。これって、アイデア蓄積のために下書き機能を使っていたら、他のライターさんにアイデア取られちゃったり、そんな心配ありますよね。なるべくライターの方には書くことに専念できる環境を提供したいものです。
そこで今回は、寄稿者権限の人は自分の投稿しか管理ができないようにする設定を婚活プレスで行いましたので、備忘録的にお伝えいたします。
寄稿者には他のユーザーの投稿を見れないようにする
こちらの機能をWordPressで実装するにあたり、最初に考えたのはプラグインでした。いくつかプラグインを見つけたのですが、いずれも高機能で細かな設定が可能なものでした。今回は多くの昨日は必要なく、サイトが重くなったり、他のプラグインと競合してしまうことを考慮し、functions.phpに直接設定をPHPで書いていくことにしました。
変更するファイルは、functions.php
管理者権限に細かな設定を施すプラグインはいくつかありました。おそらく、そういったプラグインを使っても設定はできるのでしょうが、あまり情報のないプラグインは不具合があったとき対応が難しいので、今回はPHPファイルに直接コードを書いていきます。
functions.phpの場所
functions.phpは、WordPressのテーマフォルダ(ディレクトリー)に入っています。子テーマを使っている方は、子テーマに入っているfunctions.phpにコードを追加していきます。
エディターで開きます
FTPクライアントでアクセスして対象のファイルをテキストエディターで開きましょう。ちなみに、私は「atom」というエディターを使っています。コードを書いたりするのに便利です。
追加するコードは?
要件を確認してみましょう。
- 寄稿者は自分の投稿しか見れない
- 管理者は全て閲覧可能にする
追加するコードは?
以下のPHPコードを、functions.phpに追加します。追加する場所は、一番下がいいのではないでしょうか?
今回、特にコードについての説明はしません。また、バックアップを取り、追加は自己責任でお願いします!
// 寄稿者は自分の投稿しか見れない function hide_other_posts($wp_query) { global $current_screen, $current_user; if($current_screen->id != "edit-post") { return; } if($current_user->roles[0] == "administrator") { //管理者はすべて閲覧可能に return; } if(!$current_user->roles[0] == "contributor") { //寄稿者は閲覧不可に return false; } $wp_query->query_vars['author'] = $current_user->ID; } add_action('pre_get_posts', 'hide_other_posts');
まとめ
最後に寄稿者権限でログインしてみて、他の人の投稿や下書きなどが見れないか確認してみてください。
婚活プレスのようなキュレーション型のサイトでは、たくさんのライターさん(婚活プレスでは、婚活アドバイザーの皆様)がライティングをしています。お互いの著作を保護するためにも、お互いの投稿が閲覧できないようにする設定は必要ですね。
http://qiita.com/halhide/items/8c85d4ea8f8584721aeb
コメントを残す