2016-08-13 113 views
0

我想創建自定義頁面的類別和單頁面的指定類別與其子。如何創建自定義頁面的類別和單頁面的指定類別與其子在wordpress

首先,創建自定義的單頁我用這個代碼

if (in_category('blog')){ 
include (TEMPLATEPATH . '/single-blog.php'); 
}elseif(in_category('projects')){ 
    include (TEMPLATEPATH . '/single-projects.php'); 
} 
else{ 
    include (TEMPLATEPATH . '/single-default.php'); 
} 

,並在代碼中很好地工作只是爲了specifed ctegory,不支持類的孩子。

fo例如:我想使用single-blog.php單頁的文章,其類別是blogchildren of blog

第二,對於類別頁我想做同樣的事情,我已經解釋了上面的類別的職位列表。

fo例如:我想在category-blog.php中顯示與博客類別或其子項相關的帖子列表。

我該怎麼做。

回答

1

對於你的問題的第一部分,你可能尋找cat_is_ancestor_of,所以你寫的東西是這樣的:

function is_ancestor_of($ancestor_category) { 
    $categories = get_the_category(); // array of current post categories 
    foreach ($categories as $category) { 
     if (cat_is_ancestor_of($ancestor_category, $category)) return true; 
    } 
    return false; 
} 

$ancestor_category = get_category_by_slug('blog'); 
if (in_category('blog') || is_ancestor_of($ancestor_category)) { 
    // include 
} 

對於第二一部分,我知道你是想做同樣的事情,但爲一個檔案頁面。在這種情況下,你不會有類別的數組這是一個有點簡單:

$archive_category = get_category(get_query_var('cat')); // current archive category 
$ancestor_category = get_category_by_slug('blog'); 
if (is_category('blog') || cat_is_ancestor_of($ancestor_category, $archive_category) { 
    // include 
} 

讓我知道這對你的作品,

編輯 - 這裏是另一種選擇(未測試),不直接使用 - 至少直接使用foreach循環。不知道它是否具有更高的性能。

$ancestor_category = get_category_by_slug('blog'); 
$children_categories = get_categories(array ('parent' => $ancestor_category->cat_ID)); // use 'child_of' instead of 'parent' to get all descendants, not only children 

$categories = get_the_category(); // array of current post categories 

if (in_category('blog') || ! empty(array_intersect($categories, $children_categories)) { 
    // include 
} 
+0

謝謝,波爾。它的作品像一個魅力,但我希望有另一種不使用foreach的方式,因爲它有點低性能 – Ali

+0

@Hamed你可能想要測試我的編輯,看看它是否表現更好,我不知道 –

+0

我'經過測試,但它不起作用 – Ali

相關問題