2010-12-14 23 views
0

私はこのコードをWord.phpに入れて、ページの上部にミニフィードを表示するかどうかを決めました。各ページの上部に WordpressとPHP

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

私はこれが動作しない、いくつかの理由について、変数$ NOHEADER

$noHeader = true; 
get_header(); 

を設定します。私は間違って何をしていますか?

+1

http://wordpress.stackexchange.com/ – greg0ire

+1

* "これは動作しません" * - 詳細を教えてください - 何が期待され、何が起こったのですか? – Hamish

+0

greg0ireはリンクをありがとうございます。すべてのためにstackoverflowを使用するために使用されていたので、それが存在していたことも知らなかった。 – RGilkes

答えて

2

get_header機能は、あなたがそれを呼び出したときにあったスコープ内の変数にアクセスできるようにしないと述べました。 get_headerを呼び出す前に、変数をグローバル化することで回避できます。

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

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

これは面倒なように見えるかもしれませんが、WordPressがグローバル変数を使用しているため、それはできません。私がStephenへのコメントで述べたように、親子テーマを使用したい場合に備えて、header.phpファイルを直接含むよりも優れています。

+0

コードの余分な行が傷つくことはありません。感謝!! – RGilkes

+1

グローバル化? #3を参照してください:http://stackoverflow.com/questions/4273244/auditing-a-php-codebase/4273378#4273378 – Stephen

+0

ありがとうスティーブン - ええそれは吸うが、それはワードプレスがとにかく動作し、ワードプレスの開発は本当に始まる方法のようなものですあなたが彼らのパラダイムから脱するときに痛みを感じる。 – nickohrn

2

私はこの問題を抱えていました。 wordpress関数get_header();は、インクルードされたヘッダーファイルの親ファイルのローカル変数を評価しません。正直なところ

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

に変更し、私はとにかく、get_header();include上を使用することを発見した本当の理由はありません。

あなたにも、あまりにもこれを行う可能性があります:スティーブンよう

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

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

親/子テンプレートのテーマのパラダイムを使用している場合は、get_headerを使用するとよいでしょう。これはかなり素晴らしいです。 – nickohrn

+0

助けてくれてありがとうございますが、nickorhnが言ったように、私はWPで親子テーマを使っています。 – RGilkes

+0

これは私がワードプレスを嫌う理由です。私はOO/MVCソリューションのためにそれを捨てた。 – Stephen