2011-03-14 186 views
0

我有一個相當先進的問題,希望有人在這裏可以幫助我。我有以下幾點:WordPress的:get_categories自定義帖子類型,自定義分類,按類別過濾

自定義後類型的「產品」

自定義分類「品牌」

&「類別」

每個「產品」的標準分類標記有「品牌」,並放置在父母和孩子類別

我需要做到以下幾點:

存檔。 php頁面顯示所有'類別',其中'產品'具有'品牌'分類和'品牌'的值。 這工作得很好,非常感謝以下功能@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; 
} 

這將顯示所有類別指定的品牌和專上工作。但現在我需要它能夠爲類別頁面設置'child_of'。所以我需要添加(我認爲)是查詢類別ID或指定類別父項的能力。喜歡的東西:

'child_of' => $parent_category 

我想這可能是我能幫這裏的數據庫查詢地址:

AND {$wpdb->term_taxonomy}.parent=0 

但它有點出我的聯賽!如果有人能幫助我,我會非常感激!

三江源

戴夫

回答

0

是你接近。這可能工作:

AND {$wpdb->term_taxonomy}.parent=[$term_id} 

如果你只想要你是傳遞品牌的子女,否則,如果您需要單獨傳遞,你可以在例如提供

功能添加到ARGS :

'term_id'   => 0, 
    'parent_id'   => 0, 
)); 

,然後下面你將使用新的變量

AND {$wpdb->term_taxonomy}.parent=[$parent_id} 
相關問題