タクソノミーで同じカテゴリの関連商品を表示
2016年12月1日商品詳細のページで、同じブランドの商品を表示したいと思ったけど、タクソノミーで分類されてるので少し手間取った。
query_postsにどう入れればいいかまでの下りがこれ。
<?php
//get_the_terms タクソノミー名を入れる今回は'brands'
//$tarmsにはタクソノミーのオブジェクトが入ってると思う
$tarms = get_the_terms( $post -> ID ,'brands' );
// slugから現在のsignleで表示されてるslugを抜き取る
$tarslug = $tarms[0]->slug;
$args = array(
'posts_per_page' => 5,//表示件数
'post__not_in' => array($post->ID),//現在表示されているのは除く
'tax_query' => array(
array(
'taxonomy' => 'brands',
'field' => 'slug',
'terms' => $tarslug,
),
),
'orderby' => 'rand',//ランダムに表示するが、Post type orderがあるとそっちを優先するので次の関数でそのフィルタを削除
);
//Post type orderの影響でランダムに出来ないので、とりあえずフィルタで削除
remove_all_filters('posts_orderby');
query_posts( $args );
?>
一番困ったのはPost type orderがランダムの指定を邪魔してた。
filterをリムーブできる関数を知ったので、それを叩いてから入れた。