2011-06-04 26 views
3

我如何測試一個wordpress分類術語/術語頁面是另一個術語的孩子?例如,如果我有一個分層次的「投資組合類別」分類。我的頂級條款是「數字」和「打印」。在打印下,我有「電視」等幾個。如果我在「電視」檔案中,is_tax()與is_tax('television')一樣正確,但不是is_tax('print')。基本上我希望'電視'和它的兄弟姐妹以一種方式行事,而'數字'的孩子則表現另一種行爲。wordpress測試如果自定義分類術語是另一個術語的孩子

這是可能的,還是最好由單獨的分類法服務?

回答

6

在那個頁面上說archive-portfolio-categories.php或者只是archive.php ..我相信你可以使用全局變量$ term來確定你是否在子頁面上。例如:

<?php 
$term = get_term_by('slug', get_query_var('term')); 
if($term->parent > 0) 
{ 
// THIS IS A CHILD PAGE 
// .. DO STUFF HERE.. 
} 
else 
{ 
// THIS IS THE PARENT PAGE 
// .. DO OTHER STUFF HERE.. 
} 
?> 
+0

不相當。我把它放在我的taxonomy.php頁面和電視稅(這是'print'的孩子),它似乎仍然認爲它是一個父頁面。 print_t($ term)僅顯示術語名稱,而不是對象 – helgatheviking 2011-06-28 15:19:39

+2

對不起我的錯誤..您需要先執行此操作: $ term = get_term_by('slug',get_query_var('term'),get_query_var('taxonomy' )); 這會讓你獲得$ term變量,從而獲得$ term-> parent等。 – 2011-06-29 09:33:19

+0

真棒!這樣可行。你可以編輯你的答案,所以我可以接受它嗎? – helgatheviking 2011-06-29 14:39:25

0

如果您只有2個頂層項目使用slug'print'和'digital',這應該有效。此代碼也適用於更深層的分類樹。

$current_tax = wp_get_post_terms($post->ID, 'portfolio-categories', array()); 
$current_tax_id = $curcat[0]->term_id; 

$digital = get_term_by('slug', 'digital', 'portfolio-categories', OBJECT); 
$print = get_term_by('slug', 'print', 'portfolio-categories', OBJECT); 

$sub_digital = get_term_children($digital->term_id, 'portfolio-categories'); 
$sub_print = get_term_children($print->term_id, 'portfolio-categories'); 

// this variable will hold the current top-level taxonomy term ID. 
$parent_cat_id = in_array($current_tax_id, $sub_digital) ? $digital->term_id : $print->term_id; 

請注意,我已更改爲我自己的工作代碼中的代碼。可能有小錯字。所以請檢查一下,不要盲目複製粘貼這個。

+0

整潔的解決方案。感謝分享。 – helgatheviking 2012-11-07 13:35:56

1

未出現全局$項。 但是你可以使用全局$ wp_query,您可以在taxonomy-測試{}稅.PHP:

<?php 
global $wp_query; 
var_dump($wp_query); 
?> 

我們看到了$ wp_query-> queried_object->母公司和:

<?php 
global $wp_query; 
var_dump($wp_query); 
if($wp_query->queried_object->parent == '0' && is_tax()){ 
    //parent 
}else { 
    //child 
} 
?> 
相關問題