2013-09-24 4 views
0

здесь сценарий У меня есть 2 (или более) категория и каждый из них имеет 5 (или более) подкатегорииКатегория и подкатегория, в которой должен загружаться один шаблон сообщения?

cat1 - Век (подкатегория: 1) морковь 2) томатных и т.д. cat2 - фрукты (подкатегория: 1) яблоко 2) оранжевый и т.д.

я создал для каждой категории отдельных шаблонов: одно- veg.php, одно- fruit.php ..

Итак, кто-нибудь знает, какой должна быть правильная функция для загрузки одного -veg.php на все должности, которые относятся к подкатегориям: 'veg', 'carrot' etc category?

Это то, что я принял, но я думаю, что должно быть лучше .. и конечно же, если вы заметили что-то неправильно с кодом ... Я новичок любая помощь будет оценена

/** Get Post Category and sub category */ 

function post_is_in_descendant_category($cats, $_post = null) 
{ 
    foreach ((array) $cats as $cat) { 
     // get_term_children() accepts integer ID only 
     $descendants = get_term_children((int) $cat, 'category'); 
     if ($descendants && in_category($descendants, $_post)) 
      return true; 
    } 
    return false; 
} 

/** Conditional Templates for Single posts */ 

function template_change($template){ 

    if(is_single() && (post_is_in_descendant_category('12')) || in_category('12')){ 
     $templates = array("single-veg.php"); 
    } 
    elseif(is_single() && (post_is_in_descendant_category('17')) || in_category('17')){ 
     $templates = array("single-fruit.php"); 
    } elseif(is_single() && in_category('articles')){ 
     $templates = array("single-articles.php"); 
    } 
    $template = locate_template($templates); 
    return $template; 
} 

add_filter('single_template', 'template_change'); //'template_include'/'single_template' 

ответ

0

1) Использование Post форматы:

Прежде всего Вы можете создать другой формат пост для обеих категорий (поместить следующее в functions.php):

add_theme_support('post-formats', array('single-veg', 'single-fruit')); 

Теперь вы можете использовать почтовые форматы. Вы можете выбрать пост-формат в области администратора для каждого сообщения, а затем вызвать в файле single.php следующее: для загрузки разных файлов для каждого формата.

<?php 
    if (has_post_format('single-veg')) { 
     get_template_part('content', 'single-veg'); // includes content-single-veg.php 
    } else if (has_post_format('single-fruit')) { 
     get_template_part('content', 'single-fruit'); // includes content-single-fruit.php 
    } 
?> 

2) Использование категории слизней: Если «сингл-Вег» и «сингл-фрукты» являются категория слизней, поставить следующее условие для загрузки 2 различных файлов в single.php на основе категории слизней.

<?php 
if(in_category('single-veg')) { 
    get_template_part('content', 'single-veg'); // includes content-single-veg.php 
} 
elseif(in_category('single-fruit')) { 
    get_template_part('content', 'single-fruit'); // includes content-single-fruit.php 
} 
?> 
+0

спасибо !! Я попробую оба метода. И я прав, он будет работать и для подкатегорий? – kriskl

+0

Да, он должен работать и для подкатегорий. –

+0

Привет, это не сработало :(Может быть, я делаю что-то неправильно, но я лучше проверяю, это ваш код для одного шаблона сообщения? Или пользовательский шаблон типа post? Я использую только один шаблон на данный момент, снова спасибо за вашу поддержку Может ли проблема заключаться в том, что я использую дочернюю тему (рамки генезиса)? – kriskl

Смежные вопросы