@MikeSchinkelのおかげで、次のようなコードができました。
$term = get_query_var('term');
$brand = get_term_by('slug',$term,'brands'); // This here just to illustrate
$categories = get_cross_referenced_terms(array(
'post_type' => 'Products',
'taxonomy' => 'category',
'related_taxonomy' => 'brands',
'term_id' => $brand->term_id
));
これは次の関数を使います。
// query to get categories for a specific tag
function get_cross_referenced_terms($args) {
global $wpdb;
$args = wp_parse_args($args,array(
'post_type' => 'Products',
'taxonomy' => 'category',
'related_taxonomy' => 'brands',
'term_id' => 0,
));
extract($args);
$sql = <<<SQL
SELECT DISTINCT
{$wpdb->terms}.*,
COUNT(*) AS post_count
FROM
{$wpdb->terms}
INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->terms}.term_id={$wpdb->term_taxonomy}.term_id
INNER JOIN {$wpdb->term_relationships} ON {$wpdb->term_taxonomy}.term_taxonomy_id={$wpdb->term_relationships}.term_taxonomy_id
INNER JOIN {$wpdb->posts} ON {$wpdb->term_relationships}.object_id={$wpdb->posts}.ID
INNER JOIN {$wpdb->term_relationships} related_relationship ON {$wpdb->posts}.ID=related_relationship.object_id
INNER JOIN {$wpdb->term_taxonomy} related_term_taxonomy ON related_relationship.term_taxonomy_id=related_term_taxonomy.term_taxonomy_id
INNER JOIN {$wpdb->terms} related_terms ON related_term_taxonomy.term_id=related_terms.term_id
WHERE 1=1
AND related_terms.term_id<>{$wpdb->terms}.term_id
AND {$wpdb->posts}.post_type='%s'
AND {$wpdb->term_taxonomy}.taxonomy='%s'
AND related_term_taxonomy.taxonomy='%s'
AND related_terms.term_id=%d
AND {$wpdb->term_taxonomy}.parent=0
GROUP BY
{$wpdb->terms}.term_id
SQL;
$sql = $wpdb->prepare($sql,$post_type,$taxonomy,$related_taxonomy,$term_id);
$terms = $wpdb->get_results($sql);
return $terms;
}
これはcategory.phpページで使用され、うまく機能しますが、子のカテゴリページでも(理想的には)同じコードを使用する必要がありますか?
そのため、たとえば、カスタム投稿タイプ「商品」の「ナイキ」のブランドでフィルタされた「トレーナー」のカテゴリページに掲載しています。
私は今、「商品」のカスタム投稿タイプの「ナイキ」のブランドでフィルタされた「トレーナー」のすべての子カテゴリを表示する必要があります。
単純に追加する方法はありますか?
'category_id' => '$parent_category',
任意の助けは大歓迎です!ありがとう
デイブ
あなたは非常に単純な親カテゴリを得ることができます:それはオブジェクトに割り当てられます。
$cat = get_category( $q_cat );
// Get the ID
echo $cat->category_parent;