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?
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}
.