我可以在调用内容部件时更改它的变量吗?

时间:2019-07-17 作者:Jeffrey

我在不同的网站上为标题部分使用内容部分。

我仍然希望能够手动更改每页的标题。对于这种特殊情况,我不能使用动态函数,例如the_title(). 由于标题是我正在更改的唯一内容,我仍然希望引入内容部分。

我的内容部分文件如下所示:

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

当我调用内容部分时,我正试图实现以下目标:

  include( locate_template( \'cp/heroSectionSmall.php\', false, false ) );
  $hssHeading = "A new different Title"
我可以调用内容部分并更改内容部分内变量的值吗?

非常感谢!

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

目前,您已经在include下面定义了变量,这太晚了。如果您在include上方定义了变量,那么无论包含什么文件,都应该可以访问该变量。

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

<!-- heroSectionSmall.php -->
echo $hssHeading;
也许更好的解决方案是简单地创建一个函数或调用一个操作来输出此标题,这将允许您使用条件或挂钩对其进行修改:

<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\';

    }

}
或通过过滤器挂钩:

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 );

}
通过使用过滤器挂钩或函数,您可以在一个地方自定义此部分。此外,您还允许子主题很容易地修改或覆盖此功能。