2016-08-13 1 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'); 
} 

을 사용자 정의 단일 페이지를 생성하고이 코드에서 바로는, 특정 ctegory을 위해 잘 작동하고 카테고리의 아이들을 지원하지 않습니다.

예 : 해당 카테고리가 blog 또는 children of blog 인 게시물의 단일 페이지에 single-blog.php을 사용하고 싶습니다.

두 번째 카테고리 페이지의 경우 카테고리 게시물의 목록에 대해 위에서 설명한 것과 동일한 작업을 수행하려고합니다.

예 : 블로그 카테고리 또는 그 자녀와 관련된 게시물 목록을 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

감사합니다. Pol. 그것은 매력처럼 작동하지만 조금 낮은 성능 때문에 foreach를 사용하지 않는 또 다른 방법이 있었으면 좋겠다. – Ali

+0

@Hamed 당신이 내 편집을 테스트하여 더 잘 수행되는지 확인하고 싶을 수도있다. –

+0

' 테스트 해봤는데 작동하지 않습니다. – Ali

관련 문제