WordPressに関する情報や技術紹介です

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

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

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

具体的なイメージとしては、スタッフブログ。
従業員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でのオブジェクト指定方法に従ってください。

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

タグ
, , ,
トラックバックURL
古いコメント
  • Mao さん:
    2011/11/8 火曜日 11:40:33

    ISプランニング さん
    ありがとうございました ^ ^

  • taka さん:
    2012/1/12 木曜日 11:11:23

    PHP4の状態でなんとかこちらのプラグインを稼動させることはできないでしょうか?
    お客様の都合上PHP5の環境に変更できません。

    Parse error: parse error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /home/lcvirtualdomain/nposhifa.net/htdocs/wp-content/plugins/category-limitation/wp-category-limitation.php on line 41

    プラグインを有効化すると上記のエラーがでてきました。
    他のサイトで使用させていただいていた時はPHP5の環境だったので問題なく使用できていたのですが、お客様の都合でサーバを乗り換えたらPHP4でした。

    また、私自身がPHP知識不足というのもあり、困っています。
    PHP4で稼動する同じようなプラグインもなかなか見つけられずで・・・。行き詰まってしまいました。

  • ISプランニング さん:
    2012/1/12 木曜日 11:29:13

    >takaさん
    このエラーは確かPHP4では定数constが使えないが故に出るエラーだったと思います。
    忙しいのでこちらで対応というのは難しいのですが、「wp-category-limitation.php」ファイルを以下のように修正していけばいけると思います。

    1. 41行目の「isp_cat_limit_options」をコピー
    2. 41行目の「ISP_OPTION_NAME」が使われている箇所を検索
    3. 「self::ISP_OPTION_NAME」をコピーした「isp_cat_limit_options」に変更
    4. 42~44行目まで繰り返す
    5. 41~44行目をコメントアウト(もしくは削除)

    ※3番目の変更ですが具体的に一例(282行目)
    update_option( self::ISP_OPTION_NAME, $this->myOptions );

    update_option( “isp_cat_limit_options”, $this->myOptions );

    頑張ってください。

  • taka さん:
    2012/1/12 木曜日 14:09:03

    早急にお返事いただきありがとうございました。

    書き込みの通リPHPを修正したところ、PHP4で問題なく稼動しました。

  • typelog さん:
    2012/3/28 水曜日 13:50:25

    ご無沙汰しています。いつものサポートに感謝しています。
    ところで、最近、書き手としての会員登録を自動化し、登録してくるユーザーにデフォルトの投稿許可カテゴリーを自動で割り付けたいと思っています。
    デフォルトユーザーを作り、そこにデフォルトの投稿許可カテゴリーを設定しておき、新たに登録してくるユーザーにはそれをコピーすればいいと考えています。
    同様な予定があるとか、どの程度の難易度が低いときは当方でも対応できるのか、ヒントをいただければありがたいです。

  • ISプランニング さん:
    2012/3/29 木曜日 09:00:20

    > typelogさん
    なかなか難しい事をなされようとしていますね。(^-^;)
    当社の場合は社内システムとか依頼されたHPの作成という個人での運用が主なので、そういった不特定多数のユーザーに対する処理というのはあまりしませんのでイメージが沸かないですね。

    当プラグインを利用する場合、ザッと考えると、アクションフックの「user_register」を利用する方法が手っ取り早い気がします。(参考:http://codex.wordpress.org/Plugin_API/Action_Reference/user_register

    新規ユーザーのIDが取得できるみたいなので、当プラグインのデータを呼び出して書き換えて更新すれば良いかな、と。

    うん、わりと簡単かもしれませんね(user_registerが望み通りだと仮定して…)。

  • typelog さん:
    2012/3/29 木曜日 14:23:17

    返信ありがとうございます。
    お聞きした機能が必要な局面は、管理者が不在の間に投稿されたくないカテゴリーへの投稿を防ぐ目的です。後でゆっくりそのユーザー向けのカテゴリーを設定するのが前提です。
    ヒントありがとうございます。ちょっと塀が高そうですが、トライしてみます。後でこの件の報告がなければ「挫折」ですが、代案はユーザーの自動登録承認を止めて、管理者承認にすればいいことですが。

  • mi_325 さん:
    2012/4/3 火曜日 18:12:24

    こんにちは。
    足掛け4年に渡ってこちらのプラグインを愛用させて頂いております。バージョンアップの度にどんどん快適になり、感動しています。
    また、以前こちらで何度か質問をさせて頂いた際は、丁寧にご対応いただきありがとうございました。

    さて今回お尋ねしたいのは、こちらのプラグイン(Category Limitation)と、他のプラグインとの干渉についてです。

    現在、複数の投稿者が存在するサイトを運営しており、PCからの投稿の際はCategory Limitationを利用してユーザー毎に投稿できるカテゴリ―を制限しています。
    これと同時に、WPへメールで投稿する際のデフォルトカテゴリ―をユーザー毎に指定するため、『Ktai Entry』と、さらに『Bind user to category』というプラグインを有効にしたところ、PCから投稿する際、それぞれのユーザーがどのカテゴリ―を選択しても、Category Limitationの設定画面で指定したデフォルトのカテゴリ―で投稿されてしまいます。

    CategoryLimitationとKtaiEntryだけを併用していた時は、上記のような不具合は発生しませんでしたので、問題はBind user to categoryだと思うのです。
    他のプラグインとのことでこちらにお尋ねするのは筋違いかもしれないのですが、何か解決のヒントなり頂けますとありがたいです。

    使用しているWP・プラグインのバージョンは以下の通りです。
    WordPress:3.1.1
    Category Limitation:2.3.1
    Bind user to category:0.2b
    (Ktai Entry:0.9.1.2)

    お忙しい中恐れ入りますが、どうぞよろしくお願いします!

  • ISプランニング さん:
    2012/4/4 水曜日 09:55:02

    > mi_325さん
    いつもご利用ありがとうございます。

    ご質問の件ですが、「Bind user to category」と干渉していそうな箇所を調べましたが、恐らく、というか間違いなく「category_save_pre」のフィルターフック関数が原因だと思います。

    これは「選択されたカテゴリーを保存する前に実行する関数」ですが、どちらにもそのフィルターフックがあります。

    多分、「Bind user to category」→「Categoly Limitation」の順番で実行され、後で実行される当プラグインが「制限されているカテゴリーが選択されているから排除→選択されたカテゴリーが無いからデフォルトを使用」という判断をしているのだと思います。あくまで憶測なので正しいかどうか分かりませんけど。

    ただ問題となる箇所は上記のフィルターフックで行う独自関数なのは間違いありません。

    「Bind user to category」がどういう仕組みなのか、フィルターフックによりどんなIDを返しているのか?を調べればより詳しく調べられるかもしれません。(「print_r」なんかを使って配列を調べたりすれば分かりやすいと思います)

    また、実行順序に問題がある場合はadd_filter関数で実行する優先順位を変えてみるのも手かもしれません。

    では頑張ってください(^^)

  • typelog さん:
    2012/4/21 土曜日 20:32:31

    登録してきた新入りのユーザーにあらかじめ決めておいたデフォルトユーザーと同じ投稿許可カテゴリーを与える件ですが、挫折。
    ユーザー登録時にフックしてそのユーザーIDに、読んできたデフォルトユーザーのカテゴリをコピーして保存すればよさそうですが、敷居が高くでだめでした。
    Category Limitationの標準機能になることを期待しています。

  • ISプランニング さん:
    2012/4/24 火曜日 09:18:22

    >typelogさん
    そうですか、諦めましたか(^_^;)

    当プラグインの標準機能にしてもあまり需要は無さそうなので、当面それは無いと思います。申し訳ありません…。

    ちなみに挫折との事ですが、私なりに前回でコメントした思いつきのやり方を一応挙げておきます。試していないので上手くいくか分かりませんが、もし改めてチャレンジされるなら参考にしてください。

    1.user_registerを利用して独自関数を用意(functions.phpに書いても(多分)大丈夫

    function function_name($user_id) {
    /* your action */
    }
    add_action( ‘user_register’, ‘function_name’);

    2.関数の中でCategory Limitationのデータを呼び出す(上のfunctionでいくと/* your action */の後)

    $val = get_option(“isp_cat_limit_options”);

    3.新ユーザーのデータを追加して保存し直す(当プラグイン「wp-category-limitation.php」の280行目にデータ形式が書いてあります

    /* デフォルトのカテゴリーIDが20の場合
    $val .= ‘&’.$user_id.’=default_20′;
    update_option( “isp_cat_limit_options”, $val );

    多分、上記で大丈夫だと思います。(コメントを除くと3行でいけるかな、と)
    ご理解していると思いますが、注意していただきたいのはプラグインのデータを弄るので下手をするとプラグインが動かなくなる可能性があります。まずはテスト用で試したりするのが無難だと思います。

  • typelog さん:
    2012/4/29 日曜日 16:15:26

    ほとんど手を取り足を取りのアドバイスありがとうございます。
    そのとおりにして出来ましたが、Warningが出ています。
    それと言葉足らずでしたが、「ダミー会員に標準的な投稿可能カテゴリーを割り付けておいて、新規会員登録があった時にそれらの標準的投稿可能カテゴリーを与えたい」がそもそもの発端です。
    さぼりがちなサイト管理者のためになるかな、です。
    とりあえず、コードには投稿可能なカテゴリーを定数で与えてますが、その代り、ダミーの「会員名」で与えたいと思っています。以下はコードとWarningですが、アドバイスがあったらお願いします。
    コード:
    /* 新規登録会員に投稿可能カテゴリーを割り付ける
    (for category limitation) */
    function give_common_categories($user_id) {
    if (! user_id == ” ) {
    $val = get_option(‘isp_cat_limit_options’);
    /* 標準ダミーユーザーの投稿可能カテゴリー(ID)親子ともどもの 9,10,11 を
    新規登録会員に割り当てる */
    $val .= ‘&’.$user_id.’=default_9,10,11′;
    update_option(‘isp_cat_limit_options’, $val );
    echo ($val);}
    }
    add_action( ‘user_register’,’give_common_categories’);
    実行結果:
    2=default_9,10,11&9=default_9,10,11&10=default_9,10,11
    Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\home\imi\my\wp-content\themes\customize2011\functions.php:661) in C:\xampp\htdocs\home\imi\my\wp-includes\pluggable.php on line 866

  • ISプランニング さん:
    2012/5/7 月曜日 09:17:42

    >typelogさん
    返事が遅れて申し訳ありません。ゴールデンウィーク休暇に入っていたもので…。

    > Cannot modify header information – headers already sent by
    これは既に何かを出力した後でheader関数を使用した時に出るエラーメッセージだったと思います。
    もしかするとプログラムに書いてある「echo ($val)」を削除すれば出ないのかもしれません。

    >ダミーの「会員名」で与えたいと思っています

    (^_^;)この辺は完全に当プラグインの範疇を超えていますのでご自身で調べてください。
    ただ既に独自関数の中で新規ユーザーIDが取得出来ているのでWPで用意されているユーザー名変更の関数があればそれを利用して、無ければ直接データベースを書き換えれば出来るかな、と思います。

  • typelog さん:
    2012/5/15 火曜日 11:21:31

    前に結果を報告しましたが、何処かへ行ってしまったようなので再びです。
    標準とするユーザーに設定されたカテゴリーを新規に登録してきたユーザーに自動で適用する件です。
    結果はISプランニングさんに教えられたとおりでうまくいきました。
    ありがとうございました。ものぐさ管理者には役立っています。
    ついでに、標準にするユーザーのユーザーIDを設定画面で設定できるようにしたので便利になりました。

  • typelog さん:
    2012/5/15 火曜日 11:42:39

    レフレッシュしない古い画面を見ていたようです。失礼しました。
    Warningはご指摘のとおり、echo ($val) のせいでした。どこにでも置けることではないようです。
    標準ユーザーの与え方ですが、任意のユーザー名からユーザーIDを得る関数が見当たらないのでユーザーIDを与えることで妥協しました。オリジナルの設定画面に設定項目を追加しました。
    本当に便利で、役にたつプラグインをありがとうございます。

  • tk_1098 さん:
    2012/5/23 水曜日 02:22:34

    こんにちは。

    投稿ユーザごとにカテゴリー制限したく、
    いろいろと探していたところこちらにたどり着きました。

    とても素晴らしいプラグインなのでぜひ使いたいとおもっているのですが
    プラグインをインストールして有効化して、
    投稿の新規追加で確認しようとしたところ、

    Fatal error: Call to undefined function wp_terms_checklist() in /******/wp-content/plugins/category-limitation/wp-category-limitation.php on line 173

    と出てエラーが出てしまいました。
    wp_terms_checklist()が無い為にエラーを出しているようでして、
    よろしければ解決方法を教えていただけないでしょうか?
    wpのバージョンは2.8.4になります

    よろしくお願い致します。

  • ISプランニング さん:
    2012/5/23 水曜日 08:41:59

    > tk_1098さん
    使用のご検討、ありがとうございます。

    まず、エラー箇所の部分はあくまでカテゴリーの階層表示を保ったままにするだけのものなので無くても構いません(カテゴリー制限のプログラムとは全く関係ないです)。

    ですので「wp-category-limitation.php」内の32,33行目をコメントアウトしてもらうのが一番簡単だと思います。その場合、管理画面における「階層表示を維持する」にしていても無視されますのでご了承下さい。

    あくまでこの機能はおまけですし、WPのデフォルトの振る舞いに戻るだけですので問題ないと思います。

    もしどうしてもこの機能も使いたいという場合は、WPの「wp-admin/edit-form-advanced.php」の317行目の「post_categories_meta_box」関数を利用して当プラグインの「custom_post_categories_meta_box」関数を差し替えて自前する必要があります。

    以上、ご検討下さい。

    また最も良い解決策は「バージョンを上げてください」という事だと思います(色んなバグやセキュリティーホールも改善されていますし)。(^^)

  • tk_1098 さん:
    2012/5/23 水曜日 14:53:09

    詳細なアドバイスありがとうございます。

    アドバイス通りに32,33行目をコメントアウトすることで、
    エラーは出ずに表示されました。
    ありがとうございました。

    あと1点お聞きしてもよろしいでしょうか。
    投稿の際、カテゴリー表示はされましたが、
    「Category Limitation」で設定したカテゴリのみの表示ではなく、
    登録されているカテゴリーすべてが表示されていました。
    指定したカテゴリーのみ表示することはできるのでしょうか??

    ご教授いただければ幸いです。

    何卒よろしくお願いいたします。

  • ISプランニング さん:
    2012/5/23 水曜日 15:21:45

    > tk_1098さん

    > 指定したカテゴリーのみ表示することはできるのでしょうか??
    このプラグインはそういうプラグインです。
    もしダメな場合は、カテゴリーを絞ってWPに返す段階で何かしらの不具合が発生しているのだと思います。
    アドバイスを差し上げたいのですが、バージョンが低いのでこちらで試す事が出来ません。大変申し訳ありませんがご自身で解決されるか諦めていただくしかありません。

    ご自身で解決される場合は23行目のadd_filterが制限を掛ける箇所なのでその辺りを修正してください。

  • tk_1098 さん:
    2012/5/23 水曜日 16:20:33

    >ご自身で解決される場合は23行目のadd_filterが制限を掛ける箇所なのでその辺りを修正してください。
    アドバイスありがとうございました。
    なんとか、自分で試してみたいと思います。

    また何かお聞きするかもしれませんが、
    その際はよろしくお願いいたします。

  • yamayama さん:
    2012/8/13 月曜日 13:20:39

    たいへんお世話になっております。専用カテゴリーを割り当てる参加型ポータルをはじめたのですが、こちらのcategoryLimitationなくては実現できませんでした。ほんとうにありがとうございます。厚かましいお願いですがギャラリーの画像が自分がアップしたものだけを使えるようにはできないものでしょうか?教えて頂ければ凄く助かります。宜しくお願いします。

  • ISプランニング さん:
    2012/8/20 月曜日 16:03:45

    >yamayama さん
    ご利用ありがとうございます。お役に立てて何よりです。

    > ギャラリーの画像が自分がアップしたものだけを使えるようにはできないものでしょうか?

    調べていないので難しいかは分かりませんがどうでしょうか…。
    恐らく出来るとは思いますが、色々とWP内の仕組みを理解してやらなくてはいけないと思います。

    ただザックリと基本的な事を言えば、ギャラリーで画像を取得するタイミングで「そのユーザーの投稿した画像のみに限定」すれば良いわけですから、

    1.ギャラリーを表示する際の画像を取得する関数を調べる
    2.add_actionやadd_filterで処理を追加できるか検討
    3.出来るなら処理の追加(ユーザーIDを中心に画像データの取得を行う)
    4.出来ない場合は、頑張る!

    という感じだと思います。
    ただWPはかなり柔軟に出来ているので、恐らくadd_filterやadd_actionを上手く利用すれば出来そうな気がします。

  • yamayama さん:
    2012/8/23 木曜日 16:57:17

    恐らく自分が頑張ってもできそうにない;^^;ので、友人のプログラマーさんに聞いてみます。
    ありがとうございました。

  • ISプランニング さん:
    2012/8/23 木曜日 17:06:33

    >yamayama さん
    実現できると良いですね。

    内容的にはユーザー制限みたいなものなので、その辺でどうにかなりそうな気がしそうですけど…(プラグインを利用するとか。ユーザーレベルだけで実現できれば良いですけどね)

  • n さん:
    2012/9/7 金曜日 17:01:37

    こんにちは。
    wordpress2.8.6にインストールしました。
    左メニューの 設定 > Category Limitaion でユーザ毎に権限を与えるカテゴリにチェックを入れたところ投稿画面の編集画面の入力エリアが出てこなくなりました。

    チェックを全て外したユーザでもプラグインが有効の場合、投稿の入力エリアが消えてしまいます。
    何か対応策などはありませんでしょうか。
    お忙しいところ申し訳ありませんがよろしくお願いします。

  • ISプランニング さん:
    2012/9/10 月曜日 10:23:08

    > n さん
    バージョンが2.8.6ですか?
    申し訳ないのですが、少しバージョンが古すぎて確認のしようがありません…。
    もともと作成した時点で3.1以上だった気がしますので「対応外」とさせてください。

    …大変申し訳ありません。

  • 邑里 さん:
    2013/1/23 水曜日 16:06:13

    友人と情報交換をしあう目的で立ち上げたページにて、このプラグインを使用させていただいています。
    カテゴリ選択などで友人が迷う場面を減らすことが出来て、とても助かりました。

    ただ、先日カスタム投稿を設定したのですが
    このプラグインでかけた制限がカスタム投稿用のタクソノミーにもかかるようで
    カテゴリ制限をかけている友人のアカウントからカスタム投稿記事を作成しようとするとカテゴリーが表示されません。

    具体的には以下のように

    【通常記事】
    Aカテゴリー
     A1カテゴリー
     A2カテゴリー
    Bカテゴリー
     B1カテゴリー
     B2カテゴリー
    【カスタム投稿記事】
    Cカテゴリー
    Dカテゴリー

    と分けている内、友人は通常記事編集時にA1とB1だけ選択出来る状態です。
    こちらでカスタム投稿記事のカテゴリーを代わりに設定しても友人が記事の再編集をするとカテゴリー情報が「未分類」になってしまいます。

    プラグインの設定画面にCとDは現れないので、追加設定も出来ない状態です。

    1:プラグインの設定画面でカスタムタクソノミーも設定出来るようにする
    2:カスタムタクソノミーには制限がかからないようにする
    このどちらかが出来れば良いのですが、
    「wp-category-limitation.php」を編集してどうにかできるものでしょうか。

    過去のコメントを辿り、2010年7月に「選択されたカテゴリー以外を投稿編集画面で表示させる」という逆の場合をしたい時の対処法があり
    これが出来れば上記の2の動きに近いかも、とも思ったのですが
    「include」を「exclude」に変えるという手段が今のver.では効果が無い(一応やってみました。)ようなので
    何か方法が無いか、質問させていただいた次第です。

    お忙しいところ恐縮ですが、ご教授いただければ幸いです。

  • ISプランニング さん:
    2013/1/23 水曜日 17:06:50

    > 邑里さん
    ご利用ありがとうございます。

    > ただ、先日カスタム投稿を設定したのですが
    > このプラグインでかけた制限がカスタム投稿用のタクソノミーにもかかるようで

    お恥ずかしい話、カスタム投稿という存在を知らなくて先程確認してみました。どうやら「投稿」と同じ機能をもう一つ持たせるものみたいですね。

    結論から申しあげると、かなり難しいかな、と思います。

    当プラグインはカテゴリーの制限を掛けるトリガーとして「wp_terms_checklist」という関数が呼ばれた時に行うようにしています。

    具体的にはwp-category-limitation.phpの74行目になるのですが、debug_backtrace()という関数を呼び出して、これまでの実行された関数を取得。その中に「wp_terms_checklist」という関数があれば制限を掛ける、という流れです。

    先程、カスタム投稿と投稿のバックトレースを比較したところ、どちらも「wp_terms_checklist」を呼んでいますので、ここで線引きをする事は無理です。

    恐らくWP上では何らかの引数によって「カスタム投稿」と「投稿」を分けているものと思われます。もしその引数が分かれば、wp-category-limitation.phpのget_terms_category_limit関数内でif文を利用して回避は可能だと思います。

    ただ、私の方でそれを調べるだけの時間がありませんので、邑里さん自信でお調べになって探し当てていただきければ幸いです。

    もし解決した場合、宜しければこちらにコメント頂ければ嬉しいです。(^_^;)
    (バージョンアップとして反映させて皆さんに共有して頂く事ができるので)

  • 邑里 さん:
    2013/1/23 水曜日 19:08:23

    早速のご返信ありがとうございます。

    私自身、検索しながらカスタム投稿を何とか実装した程度で関数の知識もそんなに無いのですが
    お教えいただいた内容から「get_terms」という関数を手がかりに色々記入を試したところ、プラグインの設定画面で選択するカテゴリ候補の中にカスタムタクソノミーも表示させることが出来ました。

    結果から言えば、324行目の「’category’」を
    「array(‘category’,’自分が設定したカスタムタクソノミー名’)」
    に変更することでうまく出来ました。

    「カスタム投稿」と「投稿」を分けているもの、は私もきちんとは分かっていませんが
    post_typeというものが「投稿」はpost、「固定ページ」はpage、「カスタム投稿」が自分で入力した文字列で
    一覧表示のテンプレートを作る時にこの違いを使ったので、この事になるのかなぁ…と

    なので、post_typeがpostでないものを除外する・しないの設定で
    もしかしたらカスタム投稿の除外も設定出来るのかも知れません。

    自分でよく分かっていなくて参考になりそうな情報を提供出来ず、申し訳ありませんが…
    ひとまず、私の問題は一箇所手入力で何とか出来た事をご報告しておきます。

    このプラグインとカスタム投稿とを同時に使うというのは稀かも知れないので、このままでも問題無いのかも知れませんね。
    相談にのっていただき、ありがとうございました。

  • ISプランニング さん:
    2013/1/24 木曜日 08:12:09

    > 邑里さん
    ご報告、ありがとうございます!大変助かります。

    なるほど、確かにまだ需要は少なそうですね。
    とりあえずプラグインに組み込むより、まずはこのページに注意事項として邑里さんのお調べになっていただいた事を記載しておきたいと思います。

    こちらこそ、貴重な情報をありがとうございます。

    今後とも当プラグインを宜しくお願いします。

  • saka さん:
    2013/3/7 木曜日 23:56:27

    無料でここまで素晴らしいプラグインを見たことがありません。
    大切に使わせていただきます。

    ただ1点問題がでてきてしまいました。
    2010/2/16 火曜日 11:47:25の方の投稿とほぼ同じ現象ですが
    使っているプラグインが少し違います。

    「Advanced Custom Fields」を使用し、いくつかのカスタムフィールドのテンプレートを設置しています。選択カテゴリ毎にカスタムフィールドテンプレートの自動展開されるプラグインなのですが、こちらの「Category Limitation」と併用した場合、テンプレートの自動展開が働かず、選択用のドロップダウンリストも表示されません。

    □WordPress 3.5.1
    □Advanced Custom Fields
    □category-limitation

    色々いじっているのですが大変お忙しいとは存じますが
    ご教授いただければと思います。

    もし不可能であれば、Advanced Custom Fieldsを使うのはやめるのを
    検討する必要もあるかと思っております。ただこちらのAdvanced Custom Fieldsの
    手軽さと管理に慣れてしまっているので、なんとか御社のプラグインとうまく併用できることを切に願っております。

    初めての投稿でお願いという形になってしまったことお許しください。

  • ISプランニング さん:
    2013/3/8 金曜日 09:03:59

    > sakaさん
    ご利用いただきありがとうございます。

    お問い合わせの件ですが「Advanced Custom Fields」というプラグインをダウンロードしてみて、ざっと眺めたのですが「ざっと」眺めただけではどうにもなりません…。

    制限を掛けている関数「wp-category-limitation.php 71行目」(更に言うと75~80行目の部分)でどうにかすれば良いとは思いますが、ちょっと業務の方が忙しくて検証できません。

    例えば私もよく利用する「custom field template」などの代替案はどうでしょうか?恐らく「Advanced Custom Fields」の方がリッチなUIや使いやすさはあると思いますが、カスタムフィールドをテンプレート化するという意味ではこちらでも十分使用に耐え得ると思います。ご検討ください。

    どうしても「Advanced Custom Fields」でないと実現できない事がある、という場合は上記の行あたりと色々と変更してみればいけるかもしれません。

    具体的に書くと、debug_backtrace()関数で取得した関数を比較して上手く「Advanced Custom Fields」だと判別できれば、それを避けるように作り変える事で実現可能かと思います。

  • saka さん:
    2013/3/10 日曜日 14:28:32

    ご迅速なご回答誠にありがとうございます。
    またお返事が遅くなってしまったことお詫び申し上げます。

    情報をいただきありがとうございます。
    「custom field template}の代替案も考えながら
    「Advanced Custom Fields」での動作もチャレンジしてみようと
    思います。もし正常に動きましたらフィードバックさせていただきます。

    ご丁寧にありがとうございました。

  • よっしー さん:
    2013/8/19 月曜日 17:46:36

    素晴らしいプラグインです。使わせて頂きました。

  • nor さん:
    2013/9/20 金曜日 20:48:27

    投稿ユーザごとのカテゴリ制限を考えていて、たどり着きました。

    以前の投稿で「記事を作成するとき、初めから一番上のカテゴリーにチェックが入った状態」
    というのがありました。

    現在のバージョンではチェックが入らないみたいですが、
    逆に一番上のカテゴリーにチェックが入った状態にすることはできるでしょうか?

    以前、ご返答されていた内容の逆でやれば、
    と、wp-category-limitation.phpを確認してみましたが
    かなり変更されているようで、ダメでした。。

    お忙しい中、お手数をおかけしますがよろしくお願いいたします。

  • ISプランニング さん:
    2013/9/23 月曜日 09:02:28

    > nor さん
    当プラグインのご利用、ありがとうございます。

    > 現在のバージョンではチェックが入らないみたいですが、
    > 逆に一番上のカテゴリーにチェックが入った状態にすることはできるでしょうか?

    現在のバージョンではそういう機能は設けていません。
    というのも、現在のバージョンでは制限されたカテゴリーの中からデフォルトのカテゴリーを設定しておく事ができるからです。
    何もチェックを入れずに更新した場合は選択されたデフォルトのカテゴリー、もしくは一番上のカテゴリーが選択されます。それでほぼnorさんのご要求にはお応えできているのではないでしょうか?

    もしどうしても「予めカテゴリーにチェックを入れておきたい」と言われる場合、色々なケースを考えながら処理をしなくてはならないと思います。
    申し訳ありませんが、そのような処理は対応外ですので、ご自身で行っていただくようお願い致します(恐らくphpファイルの438行目からの関数で何とかすればいけると思います)。

  • nor さん:
    2013/9/24 火曜日 09:21:25

    ご回答、ありがとうございます!
    了解しました。
    ご指定いただいた箇所、確認してみます。
    お忙しいところ、ありがとうございました。

  • akuse さん:
    2014/10/4 土曜日 18:33:30

    素晴らしいプラグインをありがとうございます。

    このプラグインは「投稿」できるカテゴリを制限しているのですが、拡張して「権限のあるカテゴリしか閲覧できない」様にしたいのですが可能でしょうか?
    特定ユーザーに見せたくないカテゴリが発生しており困っております。

  • ISプランニング さん:
    2014/10/6 月曜日 13:19:38

    > akuseさん
    当プラグインのご利用、ありがとうございます。

    > このプラグインは「投稿」できるカテゴリを制限しているのですが、拡張して「権限のあるカテゴリしか閲覧できない」様にしたいのですが可能でしょうか?

    出来ない事はないと思いますが、そういった専用のプラグインを利用された方が良いかもしれません。
    というのも、
    「ユーザーごとにカテゴリーの権限を与える管理画面」
    「カテゴリー表示制限の振る舞い」
    の2つが必要になるので、そうなってくると拡張するよりも新たなプラグインとして作成し直した方が早いと思うからです。

    もし既存のプラグインを使うのではなく、ご自身で作成していくとすれば当プラグインをコピーして新たなプラグインとして改造すると楽かもしれません。

    方法としては、
    「ユーザーごとにカテゴリーの権限を与える管理画面」というのは当プラグインの文章を多少改造してあげればほぼ丸ごと流用できると思います。
    「カテゴリー表示制限の振る舞い」は上記の管理画面以外のプログラム部分を削除して、適切なフィルター、アクションフックを呼び出すようにすればあまり労力を掛けずに出来るかな、と思います。具体的には、

    // カテゴリー制限
    add_filter('get_terms', …
    
    // カテゴリーの階層表示維持のチェック
    add_action('admin_head', …
    add_action('admin_menu', …
    

    の箇所を変更する感じです。

  • y sasaki さん:
    2014/11/13 木曜日 20:29:23

    素晴らしいプラグインをありがとうございます。
    taxonomyを追加したところ、投稿画面などで登録したtermが表示できませんでしたので、
    カテゴリ限定処理の81行目に、カテゴリーだけに動作する様にif文をいれ 対応して見ました。

    // クイック投稿、投稿編集の場合にカテゴリーを制限する
    if(in_array(“wp_terms_checklist”, $fnc) ) {
    if($obj[0]->taxonomy === ‘category’) {

  • ISプランニング さん:
    2014/11/14 金曜日 13:23:59

    > y sasakiさん
    有意義なご報告ありがとうございます!
    本当に助かります。

    早速、当プラグイン内でも組み込んでバージョンアップしておきます。

  • 坂本幸一 さん:
    2014/12/3 水曜日 14:28:20

    初めまして。
    ユーザ、カテゴリ、制限という検索条件でこちらを見つけました。
    プラグインの公開、ありがとうございます。

    早速テスト環境でプラグインを導入し、対象ユーザが使用するカテゴリのみチェックしましたが、
    設定したユーザでログインすると、すべてのカテゴリが選択できる状態となってしまいます。
    テストした環境は、WordPress4.0、実行環境はWP-Portableです。
    動作環境等に制限があればご教示いただきたく、よろしくお願いいたします。

  • ISプランニング さん:
    2014/12/3 水曜日 14:43:39

    > 坂本さん
    当プラグイン導入のご検討、ありがとうございます。

    > テストした環境は、WordPress4.0、実行環境はWP-Portableです。
    学習不足で「WP-Portable」というものを初めて知り、検索してみましたが面白そうですね。環境を整えなくてもすぐにお試しできるのは便利で良いと思います。

    ただ、今回のケースはそれが原因だと思います。
    私の開発環境がWPを基に作成、テストしていますので大変申し訳ないのですが、もしWP-Portable環境の中でご利用になる場合は当プラグインのファイルの中身を確認されて、ご自身で修正していただく必要があると思います。(手軽に試せるWPで修正する必要がある、というのは本末転倒ですが…)

    (当方で解析、修正する事はありませんのでご了承ください)

  • 坂本幸一 さん:
    2014/12/3 水曜日 15:00:04

    早速の返信ありがとうございます。

    やはり原因としてはWP-Portableになりますか。。。
    プラグインの動作確認をするには手軽で便利なので専らテストで利用しています。
    サーバで確認してみます。
    お手間をとらせてしまい申し訳ございませんでした。
    ありがとうございました。

  • mako さん:
    2014/12/4 木曜日 20:30:01

    利用させていただこうと試してみたところ、投稿画面でカテゴリーの表示に制限がかからず、
    すべてのカテゴリーが表示されていました。

    プラグインの内部を見ましたところ、
    wp-category-limitation.php の 81 行目のシングルクォーテーションが
    全角になっており、そちらを半角に修正すると正常に投稿画面でカテゴリーの表示に制限が
    かかるようになりました。

    以上、取り急ぎ報告させていただきます。

  • ISプランニング さん:
    2014/12/5 金曜日 16:35:05

    > mako さん
    本当に申し訳ありません!!
    そしてわざわざのご報告、ありがとうございます!!
    早速、修正バージョンを上げておきました。(本当に情けないです…猛省します)

  • Fuei さん:
    2014/12/9 火曜日 16:40:10

    利用させていただいています。
    今回、カスタム投稿のカテゴリをユーザー別に表示する必要があって、
    邑里様情報提供のコードに書き換えてみたところ、設定の画面で
    ユーザー名とカテゴリはそれぞれ表示されたのですが、
    カスタム投稿のカテゴリにチェックを入れて更新するとデフォルトが空欄になってしまいます。
    (htmlのソース上optionタグの間に何も出力されていませんでした。)

    そして、確認用に作ったユーザーで確認してみたところ、投稿画面で
    チェックを入れたカテゴリ以外も表示されてしまっていました。

    どこか他にも設定を変更しないといけないのでしょうか?

    php5.2、WordPress4.0.1を利用しています。

  • Fuei さん:
    2014/12/10 水曜日 11:21:34

    一部、自己完結しました。
    81行目の、if($obj[0]->taxonomy === ‘category’) { を
    if($obj[0]->taxonomy === ‘category’ || $obj[0]->taxonomy === ‘自分が設定したカスタムタクソノミー名’) { に変更したところ、各ユーザー毎にカスタム投稿のカテゴリも表示/非表示の設定が反映されました。

  • ISプランニング さん:
    2014/12/10 水曜日 11:45:31

    > Fueiさん
    当プラグインのご利用、ありがとうございます。
    コメント欄でコメントさせていただいているのですが、私自身「カスタム投稿」を設定した事がありませんので、大変申し訳ないのですがお答えする事(知識)がございません…。
    また業務上で利用する予定もないので検証する時間もありません。大変申し訳ありません。

    しかしながら(幸いにも)検証していただき、一部解決されたとの事なのでFueiさんの情報も邑里さんの情報と併せて載せておきたいと思います。(人任せで恐縮なのですが、有益な情報はなるべく分かり易い場所で共有させてください)

  • REGW さん:
    2015/2/8 日曜日 13:10:51

    バージョン 4.1–ja で皆様の動作はいかがでしょう?
    おそらくバージョンアップの際ですが、デフォルトで選択したカテゴリが反映されなくなってしまったように思えます。

  • ISプランニング さん:
    2015/2/9 月曜日 07:32:26

    > REGW さん
    ご報告ありがとうございます。
    早速、確認をしてみましたが問題となるような動作はありませんでした(4.1-ja)。

    もしかすると他のプラグインとの相性があるのかもしれません。
    よろしければ他のプラグインを止めながら検証してみていただけませんか?

  • REGW さん:
    2015/3/3 火曜日 18:45:30

    5.投稿時にカテゴリーを設定していない(チェックしていない)場合は、制限されているカテゴリーからデフォルトのカテゴリーを設定します。

    とありました。
    どうも、選択したカテゴリが最初からチェックが入るものだと、どっかで勘違いしていたみたいです。
    チェックしていないで投稿したら、無事チェックしたカテゴリが選択されていました。
    お手数おかけして申し訳ありません。
    こちらのプラグインとても便利で助かっています。

  • yoo33 さん:
    2015/3/31 火曜日 14:59:55

    はじめまして。色々探した末に先日こちらのプラグインを発見し、便利さに感動しております。
    初歩的なことかもしれないので恐縮ですが、1つ質問をさせてください。

    現在ローカルでマルチサイト風なことを試しているのですが、別のプラグインでカスタムした権限のユーザーにいくつかカテゴリを振り分けたのですが、デフォルトに指定したカテゴリ以降のIDを持たせると投稿ページのカテゴリ選択に表示されません。カテゴリ制限は「3=24,default_25,26,32」で26・32が表示されていない状態です。カスタムタクソノミーは使用しておりません(はずです。。。元々のテーマに別の人のコードをいれてますが;)のですが、原因が分かればお教えいただければと思います。

    お忙しい折、申し訳ございませんがよろしくお願いします。

  • ISプランニング さん:
    2015/3/31 火曜日 15:23:03

    > yoo33さん
    当プラグインのご利用ありがとうございます。

    > カテゴリ制限は「3=24,default_25,26,32」で26・32が表示されていない状態です。
    環境が違いますのでお答えする事ができませんが、制限カテゴリーの取得は「wp-category-limitation.php」の「Get_CategoryLimitOpitions」関数で取得していますので、その中を追ってみれば何か原因が掴めるかも知れません。

    特に467行目以降を注視してみてください。
    467行目で制限するカテゴリーIDを配列に入れて(array(24,default_25,26,32))、
    469行目でカテゴリーIDの数を数えて(4が返る筈)、
    471行目からデフォルト(ISP_DEFAULT_MARK = default_)が付いているカテゴリーIDを検索しながら配列に入れていく作業を行っています。

    各行でデータが正しく取れているか確認しながらやってみてください。

  • yoo33 さん:
    2015/3/31 火曜日 17:26:25

    お早いご返答ありがとうございます!

    ご返答にあったとおりにしてみたんですが原因が見つからず、と思っていたんですが、プラグインが干渉していました。。。お騒がせしました;
    干渉していたのは「User Access Manager」です。一応ご報告を。

  • 万年初心者プログラマー さん:
    2016/6/15 水曜日 12:32:22

    WP3.1.4を使用しています。
    同様のプラグイン(Category Checklist Tree や Taxonomy Checklist Tree)では、カテゴリー階層の保持が実現できなかったのですが、当プラグインで実現することができました。

    大変助かりました、ありがとうございます。

  • 田中 さん:
    2018/6/12 火曜日 17:23:12

    はじめまして。
    こんな機能がないかとプラグインを探していてたどり着きました。
    現在のWP最新バージョンでも使えますでしょうか?対応していないようでしたら、類似の機能をもつプラグインをご存知でしたら教えて頂けるとありがたいです。
    宜しくお願いいたします。

  • ISプランニング さん:
    2018/6/13 水曜日 07:33:22

    > 田中さん
    当サイトにも導入していますが問題なく動いているので利用できるはずです。
    もし不具合等が発生しましたらご連絡ください。
    (類似のプラグインはあると思いますが、個人ベースでの制限は無いと思います(ずっと前に調べたので今は知りませんが…))

  • かなえ さん:
    2018/8/18 土曜日 13:25:57

    こんなプラグインを探しておりました。
    本当に助かりました。

  • 田中健二 さん:
    2018/11/15 木曜日 19:27:32

    初めまして!
    大変使い勝手が良くて助かっております。
    それでは質問宜しくお願い致します。

    今までは各カテゴリーで指定した個人名が、下の「デフォルト:」のドロップダウンウィンドウにその個人名が出ていましたが、今現在「更新後、利用可能」という風になっております。
    プラグインやワードプレス等更新してみましたが変化はありません。
    対処法がありました教えてください。宜しくお願い致します。

  • ISプランニング さん:
    2018/11/16 金曜日 07:41:33

    > 田中様
    当プラグインをお使いいただき、ありがとうございます。
    コメントを頂いて、久し振りにチェックを致しましたが、田中様の言われる現象を再現できませんでした。

    こちらで行った作業は以下の通りです。
    1) カテゴリーで新規にユーザー名のカテゴリーを追加
    2) 当プラグイン管理画面でカテゴリーを指定、保存
    3) デフォルト項目で先程のユーザー名を指定、保存

    デフォルト項目にも問題なく表示されましたし、投稿ページにもおかしな点は見当たりませんでした。
    となると、田中様のWPの環境や他プラグインとの相性の問題があるのかもしれませんので、申し訳ないのですがこちらで特定は難しいかと思います。

    他プラグインを全部止めてみるとか、テスト用のWPをインストールしてみてクリーンな状態で使ってみる等の方法で原因を特定していくぐらいでしょうか。

古いコメント

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

ページTOPに戻る