Little.ws

wordpress:アーカイブページをカスタムフィールドの値で並び替える

Written by chibi. Posted in Wordpress応用

Tagged: , , ,

wordpress:アーカイブページをカスタムフィールドの値で並び替える

Published on 2009年7月8日 with No Comments

フォーラムでも同じ事で悩んでる方がいて、
投稿をカスタムフィールド値でソートし、更に時系列に並べる
こちらは解決したようですが、ぼくがやりたいことはちょーっと違っていたのです!

たとえば、良くショッピングサイトであるような『価格順』『新着順』なんかのボタンをアーカイブページに実装したかったのです。
例として、カスタムフィールド名を『item_price』とします。
これをボタンで昇順降順で自在に並び替えたい。
ということで以下覚え書き

プラグイン使わなくても出来ますが、めんどくさいのでプラグイン頼み。
WP Smart Sortを使用します。
これデフォルト使用でもいいんですが、スマートではないので。。

プラグインフォルダにUP後有効化したら、オプション画面からSmart Sort設定画面へ。

smartsort
使用するカスタムフィールド名を探し、Display Text欄に名前をつけ、右側の追加ボタンを押します。
今回は例としてフィールド名『item_price』にDisplay Text欄を『価格』としてみました。
追加後、下にスクロールすると次のような項目があります。
sort2
この、価格(_item_price-pm)ASC という部分が非常に重要で、

_item_price-pmが並べ替えのキーで、
ASCが並び順のキー(昇順(asc)・降順(desc)となります。

ここまで分かれば、あとはテンプレート側で値をとってquery_postsの引数に追加するだけです。
(query postsの引数に関しては、テンプレートタグ/query postsを参照)

引数は
ssort = 並び替えのキー
sdir = 並び順のキー

<?php
$ssort = $_GET['ssort'];
$sdir = $_GET['sdir'];
?>
 <?php if (have_posts()) :  query_posts("ssort=$ssort&sdir=$sdir");  ?>

最後に、ページ内に実装するボタン、『価格順』のリンクを

http://○○.com/?cat=カテゴリID&ssort=_item_price-pm&sdir=asc

とか

http://○○.com/?cat=カテゴリID&ssort=_item_price-pm&sdir=desc

にする。カテゴリIDの取得についてはさすがに割愛します。
以上、ものすごく省略しながらの覚え書きでした。

Share this

No Comments

There are currently No Comments on wordpress:アーカイブページをカスタムフィールドの値で並び替える. Perhaps you would like to add one of your own?

Trackbacks & Pingbacks

  1. アーカイブページをカスタムフィールドの値で並び替える | setting_web

Leave a Comment