Come posso ottenere il parametro name definito in get_header?


8

Ad esempio, nelle pagine del mio blog che uso get_header('blog');, ma non voglio creare un nuovo modello di intestazione chiamato header-blog.php , perché voglio solo fare delle piccole modifiche. È possibile in qualche modo ottenere questo parametro name nel mio file header.php ?

Risposte:


7

C'è un'azione get_headerche puoi usare. Nel tuo tema functions.php, registra un callback per quell'azione:

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

Puoi anche scrivere una piccola classe di supporto che puoi riutilizzare:

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

Nel tuo header.php, ottieni la parte / nome corrente con:

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

Puoi fare lo stesso con get_footer, get_sidebare get_template_part_{$slug}.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.