web-dev-qa-db-ja.com

phpファイルを含める場所 

私が使用したいいくつかの変数を含むphpファイルがあります。

それをheader.phpに含めると、そのファイルの変数はfooter.phpやその他の場所で認識されません。

その内容がwpファイル全体で共有されるように、このファイルを含めるのに最適な場所はどこですか。

2
Ofer

変数には一定の範囲があります。 PHPマニュアルでは、 について詳しく説明しています 。したがって、変数を設定するときには、それらがどの範囲で設定されているかを知っておく必要があります。これは、設定した場所とそのファイルのインクルード方法によって異なります。

Rarstがすでに示唆しているように、function.phpファイルは、テーマがアクティブなときはいつでもグローバルスペースに含まれるので理想的な場所です。

それの隣に、範囲はまだ適用されます。例えばfooter.phpファイルは通常、グローバルスコープに含まれていません。その中のあなたの変数にアクセスするために - あなたがグローバルにそれらを設定したなら - あなたは $GLOBALSスーパーグローバル配列 を参照することができます。

これは通常、いくつかの変数に対して行います。複数ある場合は、代わりにすべての変数を配列にアタッチすることを検討します。そのため、参照する必要があるグローバルスコープ内には変数名が1つしかありません。これは物事をお互いからもう少し離れて保ち、それは長期的にそれをより簡単にする。変数に既存の変数と同じ名前を付けると、それらが上書きされるためです。これはデバッグが難しいものを壊す可能性があります。

例:

function.phpに

$mytheme_config = array();
$mytheme_config['extra_footer_display'] = true;

footer.phpに

if ($GLOBALS['mytheme_config']['extra_footer_display']) {
    // executed when extra_footer_display is true
}

これは非常に基本的な例にすぎませんが、それはおそらくすでにあなたのための仕事をしています。私はあなたのPHPの経験のレベルを知りませんが、あなたがおそらく始めているように、あなたが上で提供されたリンクはあなたがこれがどのように働くかについての基本的な理解を与えます。テンプレートパーツはグローバルスコープ内にはロードされないので、アクセスするには$GLOBALS superglobal配列を使用してグローバル変数を参照する必要があります。 $GLOBALSは、アクセス先の範囲に関係なく、常にグローバル変数を参照しています。

5
hakre

テーマにコードを含めるのに最適な場所は、通常テンプレートファイルではなく 関数ファイル(functions.php です。等)。

あなたの仕様に応じて、そこに定数を定義するか、ラッパー関数を作成し、テーマロードの後の段階で起動するアクションに フックすることができます

また、仕様によっては、データベースに値を格納するための オプションAPI を調べることもできます。

8
Rarst

変数を定数にしてheader.phpに含める必要があります。index.phpを使用すると、設定に応じてホームページ/メインのブログページにのみ含まれ、カテゴリ、タグ、検索、およびページが失われます。

0
curtismchale