WordPress, passez la variable de page.php à header.php
J’essaie de créer un thème dans WordPress, et de permettre à l’utilisateur pour certains modèles de page, de charger soit un diaporama dans l’en-tête, soit d’afficher le titre.
Disons que j’ai un nom de modèle appelé Portfolio et un autre modèle de page appelé Portfolio with Slide-show In Head.
Puis-je depuis le portfolio.php
et portfolio-with-slide.php
envoyer des variables dans le header.php
afin de décider quoi afficher, ou dois-je créer un deuxième en-tête pour la deuxième option et charger celui qui en a besoin dans le fichier de modèle avec get_header('title')
etget_header('slide')
Quelle est la meilleure approche ?
Solution n°1 trouvée
Une solution appropriée consiste à écrire un filtre pour remplacer le titre :
function this_is_the_title_now( $title ) {
// can return un-altered $title or can use fancy logic here
return( "This is the new title." );
}
add_filter( 'the_title', 'this_is_the_title_now', 10, 2 );
Cela peut être mis dans functions.php de votre thème, ou dans page-whatever.php.
Solution n°2 trouvée
Personnellement, j’utilise la deuxième option – créez un deuxième en-tête pour la deuxième option et chargez celui qui en a besoin dans le fichier de modèle avec get_header('title')
et get_header('slide')
. C’est la meilleure approche en termes de maintenabilité du code.
Solution n°3 trouvée
puisque wordpress 5.5 get_header
a $args
un paramètre prêt à l’emploi :
Vous pouvez simplement mettre vos arguments get_header
comme ceci:
get_header( 'yourheadername', [ 'header_arg' => 'XYZ' ] );
(si vous utilisez un fichier header.php personnalisé, dans ce cas serait-ce : header-yourheadername.php
)
ou pour le fichier header.php par défaut :
get_header( null, [ 'header_arg' => 'XYZ' ] );
puis dans votre fichier d’en-tête, vous pouvez utiliser :
<?php echo $args['header_arg']; ?>
à l’intérieur if
ou ce que vous voulez 🙂
0 commentaire