¿Cómo puedo obtener el parámetro de nombre definido en get_header?

8

Por ejemplo, en las páginas de mi blog que uso get_header('blog');, pero no quiero crear una nueva plantilla de encabezado llamada header-blog.php , porque solo quiero hacer pequeños ajustes. ¿Es posible obtener de alguna manera este parámetro de nombre en mi archivo header.php ?

passatgt
fuente

Respuestas:

7

Hay una acción get_headerque puedes usar. En su tema functions.php, registre una devolución de llamada para esa acción:

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

También podría escribir una pequeña clase auxiliar que pueda reutilizar:

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

En su header.php, obtiene la parte / nombre actual con:

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

Puedes hacer lo mismo con get_footer, get_sidebary get_template_part_{$slug}.

fuxia
fuente