web-dev-qa-db-ja.com

変数をテンプレートに戻す

使いたい関数をテンプレートに入れたら、それをfunctions.phpに入れることができます。

function myfunction(){
echo 'My String';
}

add_action('myfunction','myfunction');

そしてテンプレートファイルに次のように置きます。

do_action('myfunction');

これは画面に何かを書き出した場合にのみ機能するようです。ページにではなく変数を返したい場合。例えば。

function myfunction(){
return 'My String';
}

$string = do_action('myfunction');

印刷する代わりにキャプチャしてください。どうしたらいいですか。

2
Jenski

そのためのフィルタがあります。

例:

add_filter( 'template_filter', 'wpse_102706_filter_callback', 10, 2 );
function wpse_102706_filter_callback( $defaults, $case )
{
    $args = wp_parse_args( array(
        'some_key' => 'some_modified_value'
    ), $defaults );

    return $args
}

それならあなたのテンプレートにデフォルトを追加するだけです:

apply_filters( 'template_filter', array( 'some_key' => 'default_val' ), 'single' );

プラグインAPI については、Codexに詳しい情報があります。

1
kaiser