web-dev-qa-db-ja.com

子テーマ:変数をオーバーライドする方法

私は私の最初の子テーマを作るつもりです。関数をオーバーライドする方法を理解しました(希望です)が、変数をオーバーライドする方法は?たとえば、プレミアムテンプレートでfunctions.phpに表示されているフィード変数の値を変更したいと思います。

$app_rss_feed = 'http://xxx.rss';
$app_Twitter_rss_feed = 'http://yyy.rss';
$app_forum_rss_feed = 'http://zzz.rss';

しかし、私が私の子テーマの中にfunctions.phpファイルを作成し、これらの変数に異なるRSSフィード値を代入しても...何も起こりません。では、変数を変更する正しい方法はどれですか。

4
Avionicom

私は携帯です、それでこれは短くなります。

After_setup_themeフックを使用してこれらの変数を設定するための関数を追加してください。設定する前に、それらをその関数内でグローバルとして宣言してください。

それが役立つことを願っています。

私が家に帰る前に誰かがこの答えに例を追加したい場合は、気軽にどうぞ。 ;)

3
Otto

親テーマのfunctions.phpは後でロードされ、それらの変数を上書きします。これらの変数が宣言されている場所とxが使われている場所のコードを見せてください。

例:fetch_feed()では、フィードURLをフィルタリングすることができます。

do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) );

値をフィルタリングするには、親テーマのURLを確認します。

add_filter( 'wp_feed_options', 'wpse_46644_feed' );

function wpse_46644_feed( $arr )
{
    if ( 'http://example.com/feed/' === $arr[1] )
    {
        $arr[0]->set_feed_url( 'http://replacement.example.com/feed/' );
    }
}

テストされていません。単なるアイデアです。

0
fuxia