2010-12-14 6 views
0

J'ai ce code dans mon header.php pour que Wordpress affiche un mini feed en haut de la page ou pas.Wordpress et PHP

<?php if (!$noHeader) { include('feed.php'); } ?> 

En haut de chaque page I définissez la variable NOHEADER $

$noHeader = true; 
get_header(); 

Pour une raison quelconque, cela ne fonctionne pas. Qu'est-ce que je fais mal?

+1

Peut être demandé ici aussi: http: //wordpress.stackexchange.com/ – greg0ire

+1

* "cela ne fonctionne pas" * - s'il vous plaît élaborer - ce qui était attendu et ce qui s'est passé – Hamish

+0

greg0ire merci pour le lien. tellement habitué à utiliser stackoverflow pour tout ne savait même pas qu'il existait. – RGilkes

Répondre

2

Comme Stephen dit la fonction get_header ne vous donne pas accès aux variables dans l'environnement que vous étiez quand vous l'avez appelé. Vous pouvez contourner ce problème en globalisant vos variables avant d'appeler le get_header.

<?php // In your theme file 
global $noheader; 
$noheader = true; 
get_header(); 

<?php 
global $noheader; 
if(!$noheader) { 
    include(TEMPLATEPATH.'/feed.php'); 
} 

Cela peut sembler désordonné, et il est, mais il n'y a aucune raison de ne pas le faire parce que WordPress utilise des variables globales dans tous les sens. Comme je l'ai dit dans un commentaire à Stephen, c'est mieux que d'inclure directement le fichier header.php au cas où vous voudriez utiliser des thèmes parents/enfants.

+0

Ehhh quelques lignes supplémentaires de code ne font pas mal. MERCI!! – RGilkes

+1

Mondialisation? Voir # 3: http://stackoverflow.com/questions/4273244/auditing-a-php-codebase/4273378#4273378 – Stephen

+0

Merci Stephen - ouais ça craint mais c'est un peu comme WordPress fonctionne de toute façon et le développement de WordPress commence vraiment à soyez une douleur quand vous sortez de leurs paradigmes. – nickohrn

2

J'ai eu ce problème. La fonction wordpress get_header(); n'évalue pas les variables locales du fichier parent dans votre fichier d'en-tête inclus. Changer à

// get_header(); //commented out for clarity of explanation 
include 'header.php'; 

Honnêtement, il n'y a aucune raison que je l'ai trouvé à utiliser get_header(); sur une include, de toute façon.

Vous pourriez aussi bien faire cela aussi:

// get_sidebar(); 
include 'sidebar.php'; 

// get_footer(); 
include 'footer.php'; 
+0

Vous pouvez utiliser get_header si vous utilisez le paradigme de thème de template parent/enfant, ce qui est plutôt génial. – nickohrn

+0

Merci pour l'aide, mais comme nickorhn a dit, j'utilise des thèmes parent/enfant dans WP. – RGilkes

+0

C'est pourquoi je déteste WordPress. Je l'ai abandonné pour une solution OO/MVC et je n'ai jamais regardé en arrière. – Stephen