感谢@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;
}
这用于类别。php页面,效果很好,但我现在需要在子类别页面上使用相同的代码(理想情况下)?
因此,例如,我将其放在“trainers”的分类页面上,按“nike”品牌对自定义帖子类型“products”进行过滤。
我现在需要它来显示所有儿童类别的“训练者”,也可以通过“nike”品牌来过滤自定义帖子类型的“产品”。
有没有办法简单地添加?
\'category_id\' => \'$parent_category\',
任何帮助都将不胜感激!谢谢
戴夫