WordPressのソートキー

この記事を書いてる時(+その前にコード書いてた時)、WordPress CodexがDBエラーでアクセス出来ない状態でして。
「あーーーーーCodex見れないのってなんて不便なんだーーーー!!」

とりあえず目的は達成したので、覚書として。

[Ad]

カテゴリIDはソートキーではない

記事を「カテゴリID昇順>日付昇順」でソートして配置しようと思ったら、
‘orderby’ => array( ‘cat’ => ‘ASC’ , ‘date’ => ‘ASC’)
って書いてるのにちっともきかず。
「arrayで複数指定出来るようになったって書いてあるからやったのに、おかしいな?」
と思って、試しに ‘modified’ => ‘DESC’ にしてみたら、動く。
‘ID’ => ‘ASC’とかでも動く。

これはもしかして、カテゴリIDはソートキーではないのでは…?
と思って調べたところ、やっぱりカテゴリIDでは記事のソート出来なかった。
参考:Karappo web design room » wordpressでスラッグ順に投稿を表示する方法

この記事によれば、ソートキーは

  • author
  • date
  • title
  • modified
  • menu_order
  • parent
  • ID
  • rand
  • comment_count

のようなので、カテゴリはカテゴリのIDでもスラッグでもソート出来ないらしい。

カテゴリ順>日付にソートした

上記の記事ではWordPressのコアファイルに書き込んじゃってるんですが、わたしはコアファイルに書き込むのは好きじゃないので、テンプレートファイル側でどーにかならんのか、と。
先日、「カスタムタクソノミーの記事一覧を、いちいちカテゴリー(ターム)ごとにひとつひとつ出力するコードなんぞ書かなくても、動的に全部一気に書き出す方法があるのでは?」と思って試しに書いてたコードを流用しました。

サンプルコードはめんどくさいので省略
手順としては、

  • get_categoriesする(orderby=id)
  • カテゴリーの数の分foreachループ
  • (弾きたいIDがあればifなどで分岐)
  • カテゴリIDでget_posts
  • 取得した記事をループで全部出力

get_postsを何回もやるので、スピードとしてはどうなんだ…って気はしないでもない程度には割とムリヤリ感ある
まぁそもそもカテゴリーIDで「ソート」したいっていう需要自体がニッチと言うか…

記事の順番を並べるプラグインがあるらしい

ほら、こんなに直感的。投稿記事の順番を並び替えるWordPressプラグインIntuitive Custom Post Order

こういう…………
( ◜◡◝)

ついでなのでカスタムタクソノミー全部書き出すソース

ここを参考にさせていただきました。やってることは上と一緒っていうかむしろ(私的には)こっちが本家っていうか
カスタム投稿タイプの記事の一覧をカスタムタクソノミごとに表示する – Shinichi Nishikawa’s
WordPressでwp_list_categoriesを使わずにカスタムタクソノミー (カスタム分類) のターム一覧を表示する – WebCake