カテゴリーを制限するプラグイン(自作)

ユーザー毎に投稿できるカテゴリーを制限するプラグインです。

ユーザーが誤って別のカテゴリーに投稿しないように制限させます。
慣れていないユーザーが間違って別のカテゴリーに登録したりする事が無いように初めからカテゴリーを限定していれば楽ではないか、と。

具体的なイメージとしては、スタッフブログ。
従業員Aは従業員Aのカテゴリーにしか投稿できないようにします。

機能

  1. ユーザー毎に許可するカテゴリーを選択できます(複数選択可)。
  2. 記事作成、編集中は指定されたカテゴリーのみでの投稿になります。
  3. 「クイック投稿」「クイック編集」にも対応しています。
  4. カテゴリーの階層表示を維持する機能を付加しています。(選択されたカテゴリーが上に来ないようにする)
  5. 投稿時にカテゴリーを設定していない(チェックしていない)場合は、制限されているカテゴリーからデフォルトのカテゴリーを設定します。

スクリーンショット

ダウンロード

以下からダウンロードします。
DownLoad

このページへチップを贈る

インストール

  1. zipファイルをダウンロードします
  2. zipファイルを展開後、フォルダごとプラグインフォルダに入れます。
  3. プラグインの管理画面から「Category Limitation」を有効化します。

使用方法

  1. 「設定」メニューから「Category Limitation」を選択します。
  2. ユーザー毎に許可するカテゴリにチェックを入れます。
  3. チェックを全て外すと全てのカテゴリを表示させます。←これが初期設定です
  4. 「カテゴリーの階層表示を維持する」を「はい」にしておくと、常にカテゴリーの階層を維持します(チェックを入れたカテゴリーが上に来ません)。
  5. 「変更を保存」をクリックして設定を保存します。
  6. 以降、記事作成、編集中は許可されたカテゴリのみ表示されます。

カスタム投稿をご利用の方へ

カスタム投稿を利用している場合、カスタム投稿のカテゴリーまで制限が及んでしまい、上手く設定が出来なくなるそうです。その場合は、以下のようにファイルを変更すればカスタム投稿のカテゴリーも設定画面で設定できるようなのでお試しください。(情報提供:邑里様)

wp-category-limitation.php 324行目:
$categories = (array) get_terms(‘category’, array(‘get’ => ‘all’));

$categories = (array) get_terms(array(‘category’,’自分が設定したカスタムタクソノミー名’), array(‘get’ => ‘all’));

上記作業を行った際、設定画面で不具合が発生した場合は以下のように変更すると大丈夫との事です。(情報提供:Fuei様)

wp-category-limitation.php 81行目:
if($obj[0]->taxonomy === ‘category’) {

if($obj[0]->taxonomy === ‘category’ || $obj[0]->taxonomy === ‘自分が設定したカスタムタクソノミー名’) {

その他注意事項

何かしらのトラブルが発生しても当社が責任を負うことは一切ありませんので、使用する場合は自己責任でお願いします。

更新履歴

2014-12-05 追記:
プログラム上のエラーを修正(全角によるエラー) ※コメントしてくれた方からの情報提供です (ver 2.3.3)

2014-11-14 追記:
一部条件における不具合の修正 ※コメントしてくれた方からの情報提供です (ver 2.3.2)

2011-11-08 追記:
バグフィックス(Noticeエラーの解消) (ver 2.3.1)

2011-07-25 追記 :
ver2.3公開。チェックしたカテゴリーからデフォルトのカテゴリーを選択する事が可能となりました。チェックが一つだけの場合はそれがデフォルトとなります。
また、プラグインの削除時には保存したオプション値も一緒に削除するように対応しました。

2011-07-20 追記 :
記事の投稿時にカテゴリーにチェックが入っていない時、制限されているカテゴリーをデフォルトにする機能を追加。(複数のカテゴリーがある場合は取得した最初のカテゴリーがデフォルトになります)

2011-05-26 追記:
設定画面で「Warning」レベルのエラーが発生していたバグを修正(Ver 2.1)

2011-05-25 追記:
ver 2.0 リリース!
プログラムを根本からやり変えました。それにより「クイック編集」にも対応しております。
詳しい内容はコチラのアナウンスをご覧下さい。

2011-03-01 追記:
WP3.1に対応 (ver 1.1)

2010-08-31 追記:
無駄なユーザーレベルのチェック箇所を削除(コメントアウト)しました。

2010-06-18 追記:
WordPress 3.0 に対応しました。もし不具合があればご連絡下さい。

2010-02-16 追記:
当プラグインを有効にすると一部で「Fatal error」が発生していました。
そのせいで他のプラグインに影響が出ていたみたいです。
修正しましたので、新たにダウンロードして差し替えてください。

2009-09-09 追記:
記事のコメント記入でエラーが発生した場合に、画面が表示されない(白紙になる)不具合を見つけました!
変更したものをアップロードしたので、もし使用されている方がいましたら早急に差し替えてください。
ご迷惑をお掛けします…。


追記:
WordPress 2.7以降だと「クイック投稿」という項目があるのでそこで投稿されるとプラグインの効果がありません(デフォルトのカテゴリに登録されるみたいです)。現時点では対応する時間がありませんので、バージョン2.6まででご使用ください。

2009-08-24 追記:
一応対応してみました。
対応と言いましてもスタイルシートで見えなくするだけですが(汗)…。

保存の時にハックしてどうのこうのと出来れば一番良いのですが、残念ながら私にそれだけの能力が無いので、「クイック投稿」をスタイルシートで消す方法を採っています。

「Categoly Limitaion」の設定画面を開いたら、
『クイック投稿』を強制的に隠しますか?という項目があります。
「はい」を選択して保存した場合は「非表示にする要素:」に入力されているオブジェクトのCSSが「display: none;」となります。デフォルトで入力されているオブジェクトは「クイック投稿」「クイック編集」の要素です。

他に隠しておきたい要素があればカンマ区切りで追加すれば良いかと思います。追加する場合はjQueryでのオブジェクト指定方法に従ってください。

まぁ見えなければ使われる事も無いという逃げ道ですが、誤動作は確実に減ると思います。