Вы объявили глобальный 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');
}
}