Несколько single.php в Wordpress на основе идентификатора категории - PullRequest
0 голосов
/ 06 апреля 2011

Я создаю несколько макетов для single.php в Wordpress на основе категории, которую выбирает пользователь.Я видел это с двумя категориями и делал это в прошлом.Но я не пробовал его с более чем двумя пользовательскими файлами single.php.Это кажется довольно прямым.В моем файле single.php я создал несколько операторов if, которые перенаправляют пользователя на нужный шаблон.Тем не менее, я просто получаю пустую страницу.Вот мой код в файле single.php.

    <?php
$post = $wp_query->post;

if ( in_category('12') ) {
include(TEMPLATEPATH . '/single12.php');
}

elseif ( in_category('3') ) {
include(TEMPLATEPATH . '/single3.php');
}

elseif ( in_category('1') {
include(TEMPLATEPATH . '/single1.php');
}

else {
include(TEMPLATEPATH . '/single-default.php');
}

?>

1 Ответ

0 голосов
/ 06 апреля 2011

Вы объявили глобальный wp_query?у вас может быть сообщение об ошибке, поэтому вы просматриваете пустую страницу, поэтому попробуйте:

global $wp_query;
$post = ...

В качестве хорошей практики вы можете использовать следующий код (не проверено, но оно должно объяснить, что я имею в видуза лучшие практики):

global $wp_query;
$post = $wp_query->post;
$categoryes = get_the_category($post->ID);
if ( count($categoryes) > 0 )
{
    $disalowedCategories = array(4,6,8); // these categories should use single-default.php
    $category = $categoryes[0];
    $templateFile = TEMPLATEPATH . '/single' . $category->cat_ID . '.php';

    if ( file_exists($templateFile) && !in_array($category->cat_ID, $disalowedCategories) )
    {
        include($templateFile);
    } else {
        include(TEMPLATEPATH . '/single-default.php');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...