wordpress:アーカイブページをカスタムフィールドの値で並び替える
フォーラムでも同じ事で悩んでる方がいて、
投稿をカスタムフィールド値でソートし、更に時系列に並べる
こちらは解決したようですが、ぼくがやりたいことはちょーっと違っていたのです!
たとえば、良くショッピングサイトであるような『価格順』『新着順』なんかのボタンをアーカイブページに実装したかったのです。
例として、カスタムフィールド名を『item_price』とします。
これをボタンで昇順降順で自在に並び替えたい。
ということで以下覚え書き
プラグイン使わなくても出来ますが、めんどくさいのでプラグイン頼み。
WP Smart Sortを使用します。
これデフォルト使用でもいいんですが、スマートではないので。。
プラグインフォルダにUP後有効化したら、オプション画面からSmart Sort設定画面へ。

使用するカスタムフィールド名を探し、Display Text欄に名前をつけ、右側の追加ボタンを押します。
今回は例としてフィールド名『item_price』にDisplay Text欄を『価格』としてみました。
追加後、下にスクロールすると次のような項目があります。

この、価格(_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の取得についてはさすがに割愛します。
以上、ものすごく省略しながらの覚え書きでした。



Yahoo!ブックマークに登録


Trackbacks