投稿をカテゴリ順に並び替えたい
-
ご回答ありがとうございます。
私もそのプラグインは入れているのですが、そのプラグインの設定どおりに投稿が並んでくれません。
ちなみに投稿はカスタム投稿タイプです。
こんにちは、
投稿の並び替えのコードを書いているのですが、よかったらテストしてみてもらえますか?
全カテゴリと、投稿を指定件数表示するものですが、
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件が表示されます。
ご回答ありがとうございます。
<?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は、関数内で書いているので、必要ないです
お手数かけます
ご回答ありがとうございます。
エラーなく動いたのですが、’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でループして、それぞれの投稿を表示するというものです。
テストできるカスタム投稿持っていないので、コードに問題があるのかもしれないですね
@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() ) {
これで動作すると思いますよ。
ご回答ありがとうございます。
カスタム投稿が表示されるようになりました。しかし並び順はうまくなってくれてないです。
カテゴリを階層式にしてるせいでしょうか。@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
並び順がうまくいかない場合は、ここをカスタマイズするといいかも
- トピック「投稿をカテゴリ順に並び替えたい」には新たに返信することはできません。