web-dev-qa-db-ja.com

Get_headerで定義されているnameパラメータを取得する方法

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

8
passatgt

あなたが使用できるアクション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_sidebarおよびget_template_part_{$slug}でも同じことができます。

7
fuxia