web-dev-qa-db-ja.com

呼び出し中にコンテンツ部分の変数を変更できますか?

さまざまなサイトのタイトルセクションにコンテンツパーツを使用しています。

各ページで手動でタイトルを変更できるようにしたいのですが。この特定のケースでは、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"

コンテンツパーツを呼び出して、コンテンツパーツ内の変数の値を変更できますか?

どうもありがとう!

2
Jeffrey

現在、あなたはあなたの変数がインクルードの下に定義されているので遅すぎるでしょう。インクルードの上に変数を定義した場合、インクルードされているファイルからアクセスできるはずです。

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

}

フィルターフックまたは関数を使用すると、このセクションをすべて1か所でカスタマイズすることができます。さらに、子テーマがこの機能をかなり簡単に変更またはオーバーライドできるようにします。

0
Howdy_McGee