get_headerで定義された名前パラメーターを取得するにはどうすればよいですか?


8

たとえば、私のブログページではを使用get_header('blog');していますが、header-blog.phpと呼ばれる新しいヘッダーテンプレートを作成したくありません。header.phpファイルでこの名前パラメーターを何らかの方法で取得することは可能ですか?

回答:


7

get_header使用できるアクションがあります。テーマのでfunctions.php、そのアクションのコールバックを登録します。

add_action( 'get_header', function( $name ) {
    add_filter( 'current_header', function() use ( $name ) {
        // always return the same type, unlike WP
        return (string) $name;
    });
});

また、再利用できる小さなヘルパークラスを作成することもできます。

class Template_Data {

    private $name;

    public function __construct( $name ) {

        $this->name = (string) $name;
    }

    public function name() {

        return $this->name;
    }
}

add_action( 'get_header', function( $name ) {
    add_filter( 'current_header', [ new Template_Data( $name ), 'name' ] );
});

あなたの中でheader.php、あなたは現在のパーツ/名前を次のもので取得します:

$current_part = apply_filters( 'current_header', '' );

あなたが同じことを行うことができますget_footerget_sidebarget_template_part_{$slug}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.