「タクソノミーの使い勝手を劇的に向上させるWordPressプラグイン PS Taxonomy Expander」への58件のフィードバック

  1. 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以外の方法を探しおります。

    お忙しい中恐縮ですが何卒よろしくお願いいたします。

  2. 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' );
    

    で試してみて下さい。

  3. 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>
    ——

  4. 先程記載したコメントで、タグは本コメント用に記載したものです。(念のため)

  5. MEさん

    本ブログに適用してみましたが、問題なく動作しています。
    https://www.warna.info/archives/2158/
    でのカテゴリー表示は、通常名前順となるため、「WordPressの小技」が先に表示されますが、先のコードによって、表示順が変わっています。(get_the_categoryは内部的にget_the_termsが呼ばれるためカテゴリーの表示でも適用されます。)

    記述ファイル、記述内容、他のプラグインやカスタマイズとの競合など確認してみてください。

  6. jim912様

    ご返信いただきありがとうございました。

    jim912様の環境で正常に動作するとの事で、
    かなりいろいろ試してみたのですが、やはり上手くいきませんでした。。

    他プラグイン、カスタマイズなど排除する為に、
    全てのプラグインを停止し、テーマもデフォルトの「twentyten」の最上部付近に埋め込むようにしました。
    function.phpに関しても最上部に記述しております。

    あとは記述方法かと思うですが、シンプルに以下で試しているのですが


    cat_name . ' ';
    }
    ?>

    この記述方法ですと、どのように「orderby=order」を指定すれば良いでしょうか。。?

    あまりご迷惑をおかけしても申し訳ないので、
    このあたりで最後にしたいと思います。
    何卒宜しくお願いいたします。

  7. 度々失礼いたしました。コードをそのまま入れてしまいました。
    正しくは以下になります。

    <?php
    foreach((get_the_category()) as $category) {
    echo $category->cat_name . ' ';
    }
    ?>

  8. jim912様

    解決いたしましたお知らせさせていただきます。

    教えていただいたコードではないのですが、
    以前jim912様が書かれたWordPressのget_the_categoryの取得順をカスタマイズするを参考に、
    get_ordered_termsに各種パラメーターを入れて希望通りの動作ができるようになりました。

    教えていただいたコードで動かなかった原因は不明のままですが、
    こちらで実現できましたので解決とさせていただきます。

    突然の質問にもお応えいただき本当にありがとうございました。
    いろいろ勉強にもなりました。。

    今後ともプラグインの方愛用させていただきます。
    ありがとうございました。

  9. プラグイン製作者様

    お世話になっております。
    このプラグインに関してなんですが、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環境で使用する事はできないのでしょうか。

    お忙しいところ申し訳ありませんが、ご確認よろしくおねがいいたします。

コメントを残す

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