2015-10-06 67 views
0

的子類我有一個foreach循環(WordPress模板),該目錄後的所有類別除「頭條新聞」的範疇:的foreach循環 - 檢查類是在

<?php 
    $exclude = array("Top News"); 
    $catagorystring = ''; 
    foreach((get_the_category()) as $category) { 
     if (!in_array($category->cat_name, $exclude)) { 
      $catagorystring .= '<a href="'.get_category_link($category->term_id).get_option('category_base').'" class="category-link-einrichtungen">' . $category->name . '</a>, '; 
     } 
    } 
    echo substr($catagorystring, 0, strrpos($catagorystring, ',')); 
?> 

那作品,但另外我想隱藏「最新新聞」的孩子類別。

有一個WordPress的功能,可以讓我做這樣的事情:

<?php if(post_is_in_descendant_category('3')) { 
    echo 'is in category 3'; 
} ?> 

,但我不知道如何進入foreach循環這一點。

回答

1

可以使用類對象的parent財產,並檢查它針對類別的任何標識的exclude數組中:

$excludedCategories = array(); 
foreach((get_the_category()) as $category) { 
    $breakLoop = false; 
    if (!in_array($category->cat_name, $exclude)) { 
    foreach($exclude as $cat_name_to_exclude) { 
     if($category->parent == get_cat_ID($cat_name_to_exclude)) { 
     $breakLoop = true; 
     } 
    } 
    if($breakLoop) { 
     array_push($excludedCategories, $category); 
     continue; 
    } 
    $categorystring .= '<a href="'.get_category_link($category->term_id).get_option('category_base').'" class="category-link-einrichtungen">' . $category->name . '</a>, '; 
    } 
} 
+0

奇怪的是,這說明我的只有「2009年度新聞」的孩子,但這些我想隱藏並只顯示其餘的。 –

+0

@HenningFischer我的糟糕的代碼邏輯是錯誤的(似乎我需要一些睡眠:)),看到更新的答案。 – vard

+0

嗨,當我想顯示其餘的類別我使用「$排除=陣列(!」熱門新聞「);」並重復其餘的代碼,這是一個很好的做法嗎?或者有什麼辦法可以分割循環? –