1

だから私はWordpressのテーマを書き始めていて、私の実際のコンテンツレンダラーにいくつかの変数を渡そうとしThe Loopindex.phpcontent.phpます

スコープの問題により、 で変数を作成してindex.phpでアクセスすることはできませんcontent.php。使用globalするという考えは私を身震いさせるので、おそらくそれを$post変数にタグ付けするだろうと思いました(これはすでにグローバルです)。これは標準的な方法ですか?$post標準メンバー変数を誤って変更する以外に、したくない理由はありますか? これを行う慣用的なWordpressの方法はありますか?

これが私の例ですindex.php

$post->is_n = false; # bad idea?                                
if($post_number === $n){
    $post->is_n = true
}
get_template_part( 'content', get_post_format() );

次に、私のcontent.php

if($post->is_n){$article_classes .= " is-n";}
4

2 に答える 2

1

$post 変数はすでに WordPress 内でグローバルであるため、値を渡すために別のグローバルを作成するか作成しないかは、何よりもスタイルの問題です。WordPress は、OOP 以前の PHP 4.x の時代に誕生したことを考えると、それ自体でグローバル値をかなり広範囲に使用します。

$post に値をアタッチするとうまくいきますが、ループの反復間で $post オブジェクトが完全に破棄されない可能性があるため、カスタム プロパティが $post 変数の後の反復で終了し、意図しない副作用を引き起こす可能性があります。あなたは気をつけていません。同様に、将来の WordPress の $post への変更と競合しないように、プロパティの名前空間を適切に設定する必要があります。

変数を渡すために新しいグローバルを作成することは、WordPress 内で異常なことではなく、カスタム プロパティを $post 変数にアタッチすることは少し珍しいことです。名前空間に名前を付け、値を $_GLOBAL から除外したい場合は、簡単なレジストリ クラスを作成できますが、この場合はやり過ぎかもしれません。

于 2012-04-27T17:46:08.280 に答える