Wie kann ich den in get_header definierten Namensparameter erhalten?

8

Zum Beispiel verwende ich auf meinen Blogseitenget_header('blog'); , aber ich möchte keine neue Header-Vorlage namens header-blog.php erstellen , weil ich nur kleine Anpassungen vornehmen möchte. Ist es möglich, diesen Namensparameter irgendwie in meine header.php- Datei zu bekommen?

passatgt
quelle

Antworten:

7

Es gibt eine Aktion get_header, die Sie verwenden können. functions.phpRegistrieren Sie in Ihrem Thema einen Rückruf für diese Aktion:

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

Sie können auch eine kleine Hilfsklasse schreiben, die Sie wiederverwenden können:

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

In Ihrem erhalten header.phpSie den aktuellen Teil / Namen mit:

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

Sie können das gleiche tun mit get_footer, get_sidebarund get_template_part_{$slug}.

Fuxia
quelle