カテゴリーや投稿タグ、カスタムタクソノミーの使い勝手を、どどーーーーーーんと向上させてしまうプラグインPS Taxonomy Expanderを公開しちゃいます。
このプラグインは、単一機能ではなく、カテゴリーなどのタクソノミー全般に対し、実運用時のユーザビリティーを向上させる複数の機能から成り立っています。
機能一覧
1.カテゴリー・階層化タクソノミーの登録方式を変更可能に

カテゴリーや階層化を有効にしたタクソノミーの選択方式を、タクソノミー毎に、複数選択(チェックボックス)または、単一選択(ラジオボタン)から選べるようにします。
サイトの構造や見栄えなどによっては、複数のカテゴリーを選択されると、表示上不整合が発生するケースもありますが、そういった場合でも、ユーザーの運用に頼るのではなく、タクソノミーの選択方式自体をラジオボタンに変更し、ヒューマンエラーを軽減させます。
2.タクソノミーのデフォルト設定

カテゴリー以外のタクソノミーについて、デフォルトの分類を設定可能にします。
WordPressのカスタムタクソノミーにデフォルトを設定してみると同等の機能ですが、プラグイン版ではメディアのタクソノミーについてもデフォルトの設定が可能になっています。
3.メディアのカテゴライズ

メディアに対し、タクソノミーを指定した場合のユーザビリティーを向上させます。
メディアのみに登録され、なおかつ管理画面が有効になっているタクソノミーのメニュー表示。
メディア編集画面でのタクソノミー登録方法の改善。
メディアのカテゴライズ(前編)、メディアのカテゴライズ(後編)と同等機能ですが、プラグイン版では、単一登録方法の反映(ラジオボタンでの登録)が追加されています。
4.現在の表示へのカスタム分類追加

プロフィールページの設定に「現在の状況にタクソノミーを追加」が追加され、有効にするとダッシュボードの現在の表示にカスタム分類を追加表示します。
5.分類の順序指定

Term orderメニューにて、カテゴリーなど階層化された分類の順序をドラッグアンドドロップで指定することが出来るようになります。
6.記事一覧へのカスタム分類表示追加

投稿、固定ページ、カスタム投稿の一覧にカスタム分類での絞り込み機能、カスタム分類の表示を追加します。
この記事は、jim912によって書かれたものです。
引用を行う場合は、著作権法に定める範囲にて、引用元であるSimple Colorsの出展元表示とhttp://www.warna.info/archives/451/へのリンクを必ず行って下さい。
設定方法など

プラグインを有効化すると、設定 > 投稿設定 のページに、各投稿タイプ×タクソノミーのデフォルト分類のプルダウンと、タクソノミー登録方法のチェックボックスが表示されるようになります。
初期設定を行いたいタクソノミーのみプルダウンから分類を選択してください。
タクソノミー登録方法は、ラジオボタンで選択させるタクソノミーにチェックを入れて変更を保存してください。
記事一覧にカスタム分類を表示するには、(投稿タイプ名)一覧に表示のカスタム分類にチェックを入れます。
※ 階層化されていない分類ではプルダウンの絞り込みは表示されません。これはWordPress本体が投稿タグでのプルダウンを表示しない仕様に基づいています。

プロフィールページに「現在の状況にタクソノミーを追加」が追加されますので、表示を行う場合はチェックを入れて保存してください。
順序の変更はTerm orderメニューから行います。

- Term orderメニューをクリックしてTerm orderパネルを表示
- カテゴリー以外の場合は、表示される分類名のタブをクリックして分類を選択
- 子の分類の順序を変更する場合は、親となる分類を選択して階層を移動
- 分類名をドラッグして順序を変更。「変更を保存」で変更を確定
表示に反映させる場合は、wp_list_categoriesなどのorderbyパラメータをorderと指定します。
指定例
<?php wp_list_categories( 'title_li=&taxonomy=area&orderby=order' ); ?>
ダウンロード
参考
更新履歴
- 2011.08.04 ver. 1.1.3
- Warning エラーの修正
- 2011.08.04 ver. 1.1.2
- 記事一覧でのカスタム分類絞り込み・表示機能を追加
- 2011.07.26 ver. 1.1.1
- カテゴリー等階層化分類の順序指定機能を追加
- 2011.06.24 ver. 1.0.1
- メディアタクソノミーがギャラリーで編集・保存できない問題を修正
- 2011.05.03 ver. 1.0.0
- 現在の状況へのカスタム分類表示機能追加
- 国際化対応
- Notice、Warning エラーの修正
- 単数形・複数形表示の修正
- 2011.04.28 ver. 0.8.0
- 一般公開
国際化して、久しぶりに公式ディレクトリにでも登録してみようかなあ。。
[追記]
2011.05.03 公式ディレクトリに追加しました。








朱桜花鈴さん
本日、1.1.6へのアップデートを行いました。これで解消されるか、お時間あるときに確認してみてください。
1.1.6にバージョンアップしたら、Noticeが消えたのを確認致しました。
お忙しい中、対応頂き本当にありがとうございました!
はじめまして。
投稿一覧などにカスタムタクソノミーが表示できたりソートできたりするのが、便利そうで導入しようかと思ったのですが、デバッグモードにしていると管理画面に下記の警告が表示されます。
プログラムのことがよくわからないのですが、この警告は無視できるレベルのものでしょうか。WPのバージョンは3.1.4です。
よろしくお願いします。
Warning: Call-time pass-by-reference has been deprecated – argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in ………/wp-content/plugins/ps-taxonomy-expander/ps-taxonomy-expander.php on line 414
度々失礼致します。
現在構築中のサイトで使わせていただいているのですが、とても使い勝手が良いのでなんとかこのまま行きたいと思っています。
ただ、一覧画面でフィルタリングをかけた際に、左のサイドメニューが消えてしまいます。
主要ブラウザで全部だめだったのですが、WPのバージョンによるものでしょうか?
WPのバージョンを上げたいところですが、クライアントのサーバーの制約で3.1.4以上に上げることができないので、もし単純なバグであれば治らないかなと思いご連絡させていただきました。
よろしくお願いします。
kanさん、ありがとうございます。
本件ですが、当方環境にては再現せず原因もわかりかねるため対応ができません。
お手数ですが、プラグインとの組み合わせなど、ご確認いただき原因の切り分けをおこなってみてください。
お返事ありがとうございます。
そうなんですね。警告文の中にこちらのプラグインのファイルだけでていたので、他のプラグインとの組合せなど考えもしてなかったです。
あとで確認して原因が分かりましたらご報告させていただきます。
お忙しい中ありがとうございました。
プラグインの組合せで一番怪しいのはCustom Post Type UIなのですが、これを停止すると肝心の投稿一覧画面が表示できず、分かりませんでした。
警告文はCustom Post Type UIを含め、他のすべてのプラグインを停止しても出たままでした。
警告文は、「あまりお勧めではないけれどもphp.iniの設定をいじればいいよ」みたいな文章だと思ったのですが、クライアントのサーバーがphp.iniを編集できなかったので、.htaccessに
php_flag allow_call_time_pass_reference On
を追記したら、とりあえず警告表示は消えました。
すると、今度は投稿一覧でフィルタリングをした際に、サイドメニューの位置に
Warning: Invalid argument supplied for foreach() in /var/www/……../httpdocs/wp/wp-admin/menu-header.php on line 41
という別の警告文が表示されるようになりました。
ここまでくるとちょっと私には手が付けられないので、もうクライアントにフィルタリングは使わない方向で話をするしかないかな、と思っています。
一覧にタクソノミーが表示されていたり、デフォルト値が設定できるだけでも価値ありますので。
ありがとうございました。
度々すみません。
解決しました。。
原因はカスタムタクソノミーにmenuという単語を使っていたことでした。
下記ページに答えがありました。
http://wordpress.org/support/topic/plugin-custom-post-type-ui-was-working-great-now-it-breaks-built-in-post-types
TAKE NOTE — you can’t have a custom taxonomy named “menu”.
カスタムタクソノミーに”menu”は使うな、と。
ちなみに予約語には入ってなさそうでした。
http://codex.wordpress.org/Function_Reference/register_taxonomy
お騒がせしましたが、これでこのプラグインの機能を全部使わせていただけそうです。
ありがとうございました。
Hitoshi Omagari様
はじめまして。
視覚的にも機能的にも使いやすく大変便利に使わせていただいております。
1点教えていただきたい事あるのですが、
(single.phpにて)
Term orderメニューで順序を指定した場合、
get_termsで取得した情報は並び順が反映されるのですが、
wp_get_object_termsもしくはwp_get_post_termsで情報を取得すると並び順が反映されません。
パラメーターは array( ‘orderby’=>’order’ )で指定しております。
仕様としてwp_get_object_termsもしくはwp_get_post_termsでは効かないのでしょうか?
※WordPress バージョン 3.03
※PS Taxonomy Expander バージョン 1.1.4
記事に紐付くターム情報取得のため、一覧がでてしまうget_terms以外の方法を探しおります。
お忙しい中恐縮ですが何卒よろしくお願いいたします。
MEさん、ありがとうございます。
WordPressの関数の仕様で、wp_get_object_termsおよびwp_get_post_termsでは、orderbyパラメーターでorderを指定しても無視されてしまいます。また、両関数はキャッシュ機能を使わずデータベースへのクエリーが必須になるため、あまり効率的とは言えません。
get_the_categoryをカテゴリーid順に取得するようにするをちょっくら応用して
function _usort_terms_by_term_order( $a, $b ) { if ( $a->term_order > $b->term_order ) return 1; elseif ( $a->term_order < $b->term_order ) return -1; else return 0; } function get_the_terms_orderby_term_order( $terms ) { usort( $terms, '_usort_terms_by_term_order'); return $terms; } add_filter( 'get_the_terms', 'get_the_terms_orderby_term_order' );で試してみて下さい。
jim912様
ご返信いただきありがとうございます。
ご教授いただいた内容をfuntion.phpに記載し、get_the_termsで試してみたのですが、上手くいきません。。
タクソノミー名:serviceで下記のようなソースなのですが、
‘orderby’=>’order’の指定方法が間違っているのでしょうか。。?
get_the_termsでorderbyパラメーターがないようなので
そもそもTerm orderメニューによる並べ替えではなく、
TermIDで並べ替え管理という事になりますでしょうか。。
見当違いでしたらすいません。
何卒よろしくお願いいたします。
—–
<code>
<?php
if ( $terms = get_the_terms($post->ID, ‘service’, array( ‘orderby’=>’order’ ) ) ) {
echo ‘<ul>’;
foreach ( $terms as $term ) {
echo ‘<li class=”‘. esc_html($term->slug) .’”>’ . $term->description . ‘</li>’. PHP_EOL;
}
echo ‘</ul>’;
}
?>
</code>
——
先程記載したコメントで、
タグは本コメント用に記載したものです。(念のため)MEさん
本ブログに適用してみましたが、問題なく動作しています。
http://www.warna.info/archives/2158/
でのカテゴリー表示は、通常名前順となるため、「WordPressの小技」が先に表示されますが、先のコードによって、表示順が変わっています。(get_the_categoryは内部的にget_the_termsが呼ばれるためカテゴリーの表示でも適用されます。)
記述ファイル、記述内容、他のプラグインやカスタマイズとの競合など確認してみてください。
jim912様
ご返信いただきありがとうございました。
jim912様の環境で正常に動作するとの事で、
かなりいろいろ試してみたのですが、やはり上手くいきませんでした。。
他プラグイン、カスタマイズなど排除する為に、
全てのプラグインを停止し、テーマもデフォルトの「twentyten」の最上部付近に埋め込むようにしました。
function.phpに関しても最上部に記述しております。
あとは記述方法かと思うですが、シンプルに以下で試しているのですが
cat_name . ' ';
}
?>
この記述方法ですと、どのように「orderby=order」を指定すれば良いでしょうか。。?
あまりご迷惑をおかけしても申し訳ないので、
このあたりで最後にしたいと思います。
何卒宜しくお願いいたします。
度々失礼いたしました。コードをそのまま入れてしまいました。
正しくは以下になります。
<?php
foreach((get_the_category()) as $category) {
echo $category->cat_name . ' ';
}
?>
jim912様
解決いたしましたお知らせさせていただきます。
教えていただいたコードではないのですが、
以前jim912様が書かれたWordPressのget_the_categoryの取得順をカスタマイズするを参考に、
get_ordered_termsに各種パラメーターを入れて希望通りの動作ができるようになりました。
教えていただいたコードで動かなかった原因は不明のままですが、
こちらで実現できましたので解決とさせていただきます。
突然の質問にもお応えいただき本当にありがとうございました。
いろいろ勉強にもなりました。。
今後ともプラグインの方愛用させていただきます。
ありがとうございました。
プラグイン製作者様
お世話になっております。
このプラグインに関してなんですが、PHP5.4環境で有効化できません。
以下のエラーが表示されます。
Fatal error: Call-time pass-by-reference has been removed in /home/webmaster/public_html/wp-content/plugins/ps-taxonomy-expander/ps-taxonomy-expander.php on line 414
PHP5.4環境で使用する事はできないのでしょうか。
お忙しいところ申し訳ありませんが、ご確認よろしくおねがいいたします。
これを使いこなせばWordpressスキルが一気に向上するね!→カテゴリーや投稿タグ、カスタムタクソノミーの使い勝手を向上させてしまうプラグインPS Taxonomy Expander http://t.co/7ywrjPvT