Como posso obter o parâmetro name definido em get_header?

8

Por exemplo, nas páginas do meu blog eu uso get_header('blog'); , mas eu não quero criar um novo modelo de cabeçalho chamado header-blog.php , porque eu só quero fazer um pequeno ajustes. É possível de alguma forma obter este parâmetro de nome no meu arquivo header.php ?

    
por passatgt 14.06.2015 / 11:21

1 resposta

7

Existe uma ação get_header que você pode usar. No functions.php do seu tema, registre um retorno de chamada para essa ação:

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

Você também pode escrever uma pequena classe auxiliar que pode ser reutilizada:

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' ] );
});

No seu header.php , você obtém a parte / nome atual com:

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

Você pode fazer o mesmo com get_footer , get_sidebar e get_template_part_{$slug} .

    
por fuxia 14.06.2015 / 11:44