サポート » 使い方全般 » 投稿をカテゴリ順に並び替えたい

  • 投稿の並び替えをしたいのですが、カテゴリ順には並び替えることはできないのでしょうか?

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • Category Order and Taxonomy Terms Order プラグインを、わたしは常用してます

    トピック投稿者 aq-n

    (@aq-n)

    ご回答ありがとうございます。

    私もそのプラグインは入れているのですが、そのプラグインの設定どおりに投稿が並んでくれません。

    ちなみに投稿はカスタム投稿タイプです。

    こんにちは、

    投稿の並び替えのコードを書いているのですが、よかったらテストしてみてもらえますか?

    全カテゴリと、投稿を指定件数表示するものですが、

    functions.php に リンク先のコードをコピペしていただいて、

    https://gist.github.com/tenman/1c6dc55567bf09bd1f8f

    必要な場所で、

    echo raindrops_display_recent_post_group_by_category(件数, query_postsのargs );

    query_postsのargs( array ) で post_typeを指定してみてください

    引数なしだと、すべてのカテゴリの投稿5件が表示されます。

    トピック投稿者 aq-n

    (@aq-n)

    ご回答ありがとうございます。

    <?php
    $args=array(
    	'post_type'=>'abc'
    	);
    
    query_posts($args);
    echo raindrops_display_recent_post_group_by_category(10, $args );
    	?>

    のような書き方であってますでしょうか?

    Call to undefined function raindrops_doctype_elements() in

    のようなエラーがでました。
    raindrops_doctype_elementsが定義されていないのでしょうか?

    すみません

    テーマ用の関数を含めてしまっていました

    gistのコード修正しました

    https://gist.github.com/tenman/1c6dc55567bf09bd1f8f

    $args=array(
    	'post_type'=>'abc'
    	);
    echo raindrops_display_recent_post_group_by_category(10, $args );

    query_postは、関数内で書いているので、必要ないです

    お手数かけます

    トピック投稿者 aq-n

    (@aq-n)

    ご回答ありがとうございます。
    エラーなく動いたのですが、’post_type’=>’abc’の投稿は出てこずに、通常の投稿(’post_type’=>’post’)の一覧だけが出てきます。

    raindrops_display_recent_post_group_by_category
    では、ザックリいうと、なにをやっているのでしょうか?
    ある程度難しい言葉を使ってもらって構いません。

    get_all_category_ids() を使って、すべてのカテゴリIDを取得して、得られる

    array( 0=>category_id1, 1=>category_id2 ... )

    といった配列から、

    array( category_name1 => 0, category_name2 => 0 ...)

    といった配列を作り、自然順(大文字小文字を無視)で キーをソートします

    query_post()で得られた投稿をループの中で、投稿IDを上の配列の値に、投稿件数分セットします。

    array( category_name1 => array(post_id1,post_id2), category_name2 => array(post_id3) ...);

    あとは、上記の配列を、foreachでループして、それぞれの投稿を表示するというものです。

    テストできるカスタム投稿持っていないので、コードに問題があるのかもしれないですね

    トピック投稿者 aq-n

    (@aq-n)

    なるほど、ということをフックしてSQLを書き換える形ではなく、一度取得したものを配列ソートして表示させているというわけですね。

    @nobita さん、aq-n さん

    ええっと、関数定義の引数が 1 つだけなので、投稿タイプが query_posts() に渡りません。

    誤: function raindrops_display_recent_post_group_by_category( $args = array() ) {
    正: function raindrops_display_recent_post_group_by_category( $limit_posts, $args = array() ) {

    これで動作すると思いますよ。

    トピック投稿者 aq-n

    (@aq-n)

    ご回答ありがとうございます。
    カスタム投稿が表示されるようになりました。しかし並び順はうまくなってくれてないです。
    カテゴリを階層式にしてるせいでしょうか。

    @kjmtshさん

    ありがとうございます Gistのコード修正させていただきました。

    @aq-nさん

    カスタム投稿が表示されるようになりました。しかし並び順はうまくなってくれてないです。
    カテゴリを階層式にしてるせいでしょうか。

    ちゃんと調べていませんが、階層の問題ではないように思います。

    カテゴリソートを行っているのは、以下の関数です。

    function compare_capital_lower_not_distinguish( $a, $b ) {
        return strcasecmp( $a, $b );
    }

    http://www.php.net/manual/ja/function.strcasecmp.php

    並び順がうまくいかない場合は、ここをカスタマイズするといいかも

    トピック投稿者 aq-n

    (@aq-n)

    ありがとうございます。その部分を詳しく見てみます。

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • トピック「投稿をカテゴリ順に並び替えたい」には新たに返信することはできません。