参考
http://yahss.net/wordpress/260-260/
こいつはカテゴリでかつポストタイプは指定無しのコードだった。
一応記録
<?php
$area = $_GET['area'];//urlにpostが渡されていればそれを取得(urlの例 → http://ドメイン/カテゴリスラグ/?area=新宿区)
$catSlg = $category_name;//カテゴリスラグを取得
$cfKey = 'area';//カスタムフィールドのキー名
//続くリストタグで、絞り込み用のリンクを生成。
//これを応用して、チェックボックスなどにして、複数のカスタムフィールドの値による絞り込みも可能。
?>
<ul>
<li><a href="<?php echo get_option('home'); ?>/<?php echo $catSlg ?>"><?php echo ($area == '')? "<strong>すべて</strong>":"すべて" ?></a></li>
<li><a href="<?php echo get_option('home'); ?>/<?php echo $catSlg ?>/?area=新宿区"><?php echo ($area == '新宿区')? "<strong>新宿区</strong>":"新宿区" ?></a></li>
<li><a href="<?php echo get_option('home'); ?>/<?php echo $catSlg ?>/?area=江東区"><?php echo ($area == '江東区')? "<strong>江東区</strong>":"江東区" ?></a></li>
<li><a href="<?php echo get_option('home'); ?>/<?php echo $catSlg ?>/?area=中央区"><?php echo ($area == '中央区')? "<strong>中央区</strong>":"中央区" ?></a></li>
</ul>
<?php
$args = array(
'category_name' => $catSlg,//カテゴリスラグによる絞り込み
'meta_query' => array(//カスタムフィールドによる絞り込み
array(
'key' => $cfKey,//カスタムフィールド名
'value' => $area,//カスタムフィールドの値
"compare" => "LIKE"
)
),
'posts_per_page' => 10,//1ページあたりの表示件数
'paged' => $paged
);
query_posts($args);//実行
?>
要点すぎてちょっと最初よくわからなかったが、
簡単にいうと 絞り込みボタンに?名前=値 をもたして
URLからその値を取得して
それをクエリポストで入れて表示させる。
つまり、タクソノミーページとかなんだけど
クエリポストを書くってこと。
$area = $_GET['area'];//urlにpostが渡されていればそれを取得(urlの例 → http://ドメイン/カテゴリスラグ/?area=新宿区)
ここで値がなかった場合に普通の絞り込んでないやつがでないから
分岐させた。
クエリポストを発動するURLはつまり?名前=値場合のみってコード
忘れずにリセットクエリも分岐でかいとこう
<?php
$shashu = $_GET['shashu'];//urlにpostが渡されていればそれを取得(urlの例 → http://ドメイン/カテゴリスラグ/?area=新宿区)
if($shashu){//入っていればクエリポスト投げる
$cfKey = 'shashu';//カスタムフィールドのキー名
$args = array(
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => get_query_var( 'taxonomy' ),
'field' => 'slug',
'terms' => get_query_var( 'term' ),
),),
'meta_query' => array(//カスタムフィールドによる絞り込み
array(
'key' => 'shashu',//カスタムフィールド名
'value' => $shashu,//$area,//カスタムフィールドの値
/* "compare" => "LIKE"*/
)
),
// 'posts_per_page' => 10,//1ページあたりの表示件数
'paged' => $paged,
'post_type' => 'shop',
);
query_posts($args);
}
?>
いろんなカテゴリでつかえるように動的にした。
'taxonomy' => get_query_var( 'taxonomy' ),
'field' => 'slug',
'terms' => get_query_var( 'term' ),
このあたりとか
ポストタイプと
メタキーは直入れだもんで
他のポストタイプのときは使えんで分岐してかきなおしゃあ
絞り込みボタン
サブカテゴリ(対応車種):
<a href="<?php echo get_term_link($term,get_query_var( 'taxonomy')); ?>/?shashu=NA"><span class="na_c icon_sb">NA</span></a><a href="<?php echo get_term_link($term,get_query_var( 'taxonomy')); ?>/?shashu=NB"><span class="nb_c icon_sb
">NB</span></a><a href="<?php echo get_term_link($term,get_query_var( 'taxonomy')); ?>/?shashu=NC"><span class="nc_c icon_sb">NC</span ></a>
</div>
<?php echo get_term_link($term,get_query_var( 'taxonomy')); ?>
こいつのあとに
<?php //カテゴリー・タグ情報を取得(slug,アーカイブページでターム名取得,タクソノミー名取得)
$term = get_term_by('slug',get_query_var( 'term' ),get_query_var( 'taxonomy' )
);
?>
ってのがあるけど下記がアッタから注意
カスタムタクソノミーのアーカイブページで、そのページのタクソノミーのスラッグ名を取得する
$term
これだけです。
echo $term;
とすると、タクソノミーのスラッグ名が表示されます。
さらに「get_term_by」を使用すると、そのタクソノミーの情報を取得できます。
$the_term = get_term_by("slug", $term, "タクソノミー名");
うかつに、$termに変数を代入してしまわないよう注意しましょう。
ほかにも、
投稿記事ページで記事の情報を取得できる「$post」
カテゴリーアーカイブページでカテゴリーIDを取得できる「$cat」などがあります。