Как я могу получить параметр имени, определенный в get_header?

8

Например, на своих страницах блога я использую get_header('blog');, но я не хочу создавать новый шаблон заголовка с именем header-blog.php , потому что я просто хочу внести небольшие изменения. Можно ли как-то получить этот параметр имени в моем файле header.php ?

passatgt
источник

Ответы:

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_footer, get_sidebarи get_template_part_{$slug}.

Фуксия
источник