2011-04-06 5 views
0

Je crée plusieurs mises en page pour le fichier single.php dans Wordpress en fonction de la catégorie sélectionnée par l'utilisateur. J'ai vu cela avec deux catégories et l'ai fait dans le passé. Mais je ne l'ai pas essayé avec plus de deux fichiers single.php personnalisés. Cela semble assez simple. J'ai créé des instructions if dans mon fichier single.php qui redirige l'utilisateur vers le bon modèle. Cependant, je reçois juste une page blanche. Voici mon code dans le fichier single.php.Multiple single.php dans Wordpress basé sur l'identifiant de catégorie

<?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'); 
} 

?> 

Répondre

-1

Avez-vous déclaré global wp_query? vous pourriez avoir une erreur de déclaration de c'est pourquoi vous seing une page blanche, alors essayez:

global $wp_query; 
$post = ... 

Dur comme une meilleure pratique, vous pouvez utiliser le code suivant (non testé, mais il doit expliquer ce que je veux dire pour une meilleure pratiques):

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'); 
    } 
} 
Questions connexes