コレ、解決してませんでした。

複数カラムに対してORDER指定は可能だけど、ASC,DESCの指定が最初の一個しか効かない。ソースを読んでも確かにそうなってる。

それはquery_postsの仕様で少なくとも今日時点ではそうなってる。WordPress Query APIはSQLのBad Wrapperだ。

具体的には勝手なパラメーターを追加することで強制的にORDER句を指定することにした。

// functions.php
function force_order($orderby, $query) {
	return $query->get('force_order') ? $query->get('force_order') : $orderby;
}
add_filter('posts_orderby','force_order');

こんな感じで使う。

query_posts('force_order=menu_order ASC, ID DESC')

俺のこの対応方法も酷い。

この「ORDERに複数指定可能だったら当然ASC,DESCも指定可能だろう」という期待が通用しないのがWordPressという修羅の国。

その肌感覚を散々味わってきたハズが、最近触ったpostMashというプラグインのコードがマトモだったことで油断してた俺をWordPress Query APIのコードが打ちのめした。

Comments


Option