web-dev-qa-db-fra.com

Puis-je changer une variable dans une partie de contenu lors de son appel?

J'utilise une partie de contenu pour les sections de titre sur divers sites.

J'aimerais toujours pouvoir changer le titre manuellement sur chaque page. Dans ce cas particulier, je ne peux pas utiliser de fonctions dynamiques comme the_title (). Étant donné que le titre est la seule chose que je change, je voudrais toujours insérer la partie contenu.

Mon fichier de partie de contenu ressemble à ceci:

 <?php
  $hssHeading = "A Title";
 ?>
<section class="heroSectionSmall">
  <div class="sectionIntro">
    <h1><?php echo $hssHeading ?></h1>
    <div class="sectionIntro__underline"></div>
  </div>
</section>

Lorsque j'appelle la partie contenu, j'essaie d'accomplir quelque chose comme ceci:

  include( locate_template( 'cp/heroSectionSmall.php', false, false ) );
  $hssHeading = "A new different Title"

Puis-je appeler une partie de contenu et modifier la valeur d'une variable à l'intérieur de la partie de contenu?

Merci beaucoup!

2
Jeffrey

Actuellement, votre variable est définie sous l'inclusion, ce qui serait trop tard. Si vous avez défini la variable au-dessus de l'inclusion, elle doit être accessible par le fichier inclus.

$hssHeading = "A new different Title";
include( locate_template( 'cp/heroSectionSmall.php', false, false ) );

<!-- heroSectionSmall.php -->
echo $hssHeading;

Peut-être qu'une meilleure solution est de créer simplement une fonction ou d'appeler une action pour sortir cette rubrique qui vous permettra de la modifier avec des conditions ou des crochets:

<h1><?php the_hssHeading( $hssHeading ); ?></h1>

<!-- functions.php -->
/**
 * Display HSS Heading
 *
 * @param String $current_heading
 *
 * @return void
 */
if( ! function_exists( 'the_hssHeading' ) ) {

    function the_hssHeading( $current_heading ) {

        echo $current_heading . ' | Foobar';

    }

}

Ou via le crochet du filtre:

echo apply_filters( 'theme_hss_heading', $hssHeading );

<!-- functions.php -->
/**
 * Modify the HSS Heading
 *
 * @param String $current_heading
 *
 * @return void
 */
function hssheading_modifications( $current_heading ) {

    return sprintf( '<h1 class="%1$s">%2$s</h1>', 'foobar', $current_heading );

}

En utilisant un crochet ou une fonction de filtre, vous vous ouvrirez à la personnalisation de cette section en un seul endroit. De plus, vous autorisez les thèmes enfants à modifier ou remplacer cette fonctionnalité assez facilement.

0
Howdy_McGee