web-dev-qa-db-fra.com

Comment puis-je obtenir le paramètre de nom défini dans get_header?

Par exemple, sur mes pages de blog, j’utilise get_header('blog');, mais je ne veux pas créer un nouveau modèle d’en-tête appelé header-blog.php , parce que je veux juste faire de petits ajustements. Est-il possible d'obtenir en quelque sorte ce paramètre de nom dans mon header.php file?

8
passatgt

Il existe une action get_header que vous pouvez utiliser. Dans le functions.php de votre thème, enregistrez un rappel pour cette action:

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

Vous pouvez également écrire une petite classe d'assistance que vous pouvez réutiliser:

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

Dans votre header.php, vous obtenez la pièce/le nom actuel avec:

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

Vous pouvez faire la même chose avec get_footer, get_sidebar et get_template_part_{$slug}.

7
fuxia