2011/08/12: wordpressでスラッグ順に投稿を表示する方法
wordpressループ内の記事内容をどのような順番で表示するかを設定する際には、query_posts関数内の"orderby=〇〇"という引数で、どのような記事が表示されるかを決めます。
例えばタイトル順で並べたいときには、
"orderby=title"
といった具合です。
今回、スラッグの順番で並べ替えたかったのですが、
"orderby=slug"
などとやっても、全く並べ替えてくれませんでした。
ではどうしたらいいのか。
結論から言いますと、スラッグで並べ替えることはできないようです。
ですので、この"orderby"の仕様の部分を書き換えてみました。
とっても簡単です。
(以下は、最新版のwordpress3.2.1を元にしています。)
wp-includes/query.phpの2320行目を書き換え
同ファイルの2354行目に下記を追加
たったのこれだけで、
"orderby=slug"
が使用可能になり、
スラッグ順に投稿を表示できるようになりました。
トラックバックURL
例えばタイトル順で並べたいときには、
"orderby=title"
といった具合です。
今回、スラッグの順番で並べ替えたかったのですが、
"orderby=slug"
などとやっても、全く並べ替えてくれませんでした。
ではどうしたらいいのか。
結論から言いますと、スラッグで並べ替えることはできないようです。
ですので、この"orderby"の仕様の部分を書き換えてみました。
とっても簡単です。
(以下は、最新版のwordpress3.2.1を元にしています。)
wp-includes/query.phpの2320行目を書き換え
$allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count');↓
$allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count' , 'slug');
同ファイルの2354行目に下記を追加
case 'slug':
$orderby = "$wpdb->posts.post_name";
break;
たったのこれだけで、
"orderby=slug"
が使用可能になり、
スラッグ順に投稿を表示できるようになりました。