外注化や複数人で1つのワードプレスを使って記事を投稿したり編集する場合があります。
この時、ワードプレスの投稿一覧で管理者は全ての記事を見れるけど、寄稿者や投稿者には特定のカテゴリの記事を見せたくない(非表示にしたい)なんていう場合もあります。
ここではそのやり方をちょっと紹介です。
関連)
権限(寄稿者/投稿者)によって自分の記事だけ表示、他の記事は見えなくする方法
Contents
カテゴリIDをチェック
まずは非表示にしたいカテゴリIDをチェックします。
ワードプレスにログインして管理画面から
「投稿」→「カテゴリ」
で、非表示にしたいカテゴリの編集に入ります。
- ①「投稿」⇒②「カテゴリ」を選択
↓↓↓↓↓↓
カテゴリの一覧が表示されるので、
非表示にしたいカテゴリをクリック。
- ①:ここでは例として「未分類」というカテゴリを非表示にしてみる。
ということで「未分類」をクリック
↓↓↓↓↓↓
表示上、上の部分(URL)にカテゴリIDが表示されるのでそれをチェック。
- ①:ここでは「category&tag_ID=1」と表示されているので、カテゴリIDは「1」
これでカテゴリIDが分かります。
非表示にしたいカテゴリが複数ある場合、同様にそれらのカテゴリIDもチェックしましょう。
カテゴリを非表示にする方法
カテゴリのIDが分かったら、実際に寄稿者や投稿者など、権限によってそのカテゴリの記事が表示されないようにしてみます。
非表示にするには phpコードの記述と実際に反映が必要ですが、まずはそのphpコードから。
権限でカテゴリを非表示にするコード
1 2 3 4 5 6 7 8 9 10 11 12 |
//権限:寄稿者 or 投稿者の場合 //カテゴリーID=1は非表示 function jin_hide_posts_rules($query) { global $current_user; if(is_admin()){ if(current_user_can('contributor') or current_user_can('author')){ $query->set('cat','-1'); } } } add_action('pre_get_posts', 'jin_hide_posts_rules'); |
このコードは、以下を行ってます。
- 1)is_admin()
ワードプレスにログインしている時、 - 2)current_user_can('contributor') or current_user_can('author')
権限が寄稿者(contributor)または投稿者(author)の場合、 - 3)$query->set('cat','-1')
カテゴリIDが「1」の記事を飛ばす(非表示にする)
カテゴリIDが4の場合には、「-1」を「-4」に書き換えればOKです。
基本はまず上のコードをそのままコピー。
非表示にしたいカテゴリIDを 1以外に修正して使えばOKです。
※)注意ポイント:カテゴリID「1」は指定しない
カテゴリID「1」は、ワードプレスで最初から存在する「未分類」に割り当てられてます。
記事作成でカテゴリを指定せず下書き保存すると、自動的にこのカテゴリ「未分類」が指定されるため、カテゴリ「未分類」を非表示にすると、下書き記事も見えなくなってしまい、混乱の元。
非表示対象のカテゴリは、「未分類」(カテゴリID=1)以外のものにしましょう。
権限を寄稿者だけにしたいとか、
複数のカテゴリを指定したい場合には、以下参照してカスタマイズしてみてください。
カテゴリ非表示のポイント
3)のカテゴリを非表示にするには、
set('cat','-1')
と、カテゴリIDにマイナスを付けるのがポイント。
ここではカテゴリID=1を非表示にしたいので「-1」。
複数のカテゴリを指定する場合
複数のカテゴリを非表示にしたい場合、
カテゴリIDそれぞれにマイナスを付け、カンマ「,」で区切って並べればOK。
$query->set('cat','-1, -8, -12')
※)非表示にしたいカテゴリのIDが「1」「8」「12」の例。
寄稿者だけ、投稿者だけにするには
2)の寄稿者、投稿者の判別では、
寄稿者だけで良い場合には、
current_user_can('contributor') だけでOK
例)
if(current_user_can('contributor') ){
投稿者のみが対象の場合には、
current_user_can('author') だけでOK。
例)
if(current_user_can(' author ') ){
コードをワードプレスにセットする
では上で見たphpコードを実際にワードプレスに反映してみます。
(以下 Coccon というテーマを使っている場合の例)
- ①「外観」⇒「テーマエディター」を選択
↓↓↓↓↓↓
つづいて「テーマのための関数(functions.php)」を選択。
- ①「テーマのための関数」を選択
↓↓↓↓↓↓
「テーマのための関数(functions.php)」の編集画面になるので、そこに先ほどのphpコードをコピペ。
- ①:先ほどのコードをコピペ
- ②:最後に「ファイルを更新」をクリック
以上で、指定したカテゴリの記事は、寄稿者や投稿者といった権限の場合には投稿一覧に表示されなくなります。
実際に指定した権限(寄稿者や投稿者)のユーザーIDとパスワードでログインして、想定通りに非表示になっているか確かめてみてください。
今回のポイント
他の権限のユーザーに特定カテゴリの記事を見せたくない、というのは、ちょっとしたレアケースですが、テスト記事を入れている場合などには活用できそうです。
ちょっとした phpコードで実現できますが、非表示にするカテゴリはID=1(未分類)以外のものでお試しになってみてくださいね。
また、ブログの収益化をしてみたい、
ネットで収益を上げたいけどやり方が分からない、
などあれば、以下のメルマガにも登録してみてくださいね。