どのテンプレートからでも呼び出せる変数を使うため、今まではデータベースに「option」として書き込んで呼び出していましたが、変数を1つ追加するたびに追加するコードが猛烈に長くて複雑。
ACF Proの「オプション」を使うと、簡単かつあらゆる形式を使えるので便利ですが、過度のプラグイン依存も気がすすまない。
グローバル変数を使えば(追加すれば)ある程度カバー出来ますが、乱用すると「良くない」「キケン!」という記事が多くてコワイですが、実際何をすると何が起きるかが分からない。
自分でトラブルに直面しないと、ね。
ということで追加の仕方。超簡単。
functions.php
if ( !function_exists( 'my_theme_var_setup' ) ){
function my_theme_var_setup(){
global $my_theme_var_title;
$my_theme_var_title = 'どこでも呼び出せる変数';
}
add_action( 'after_setup_theme', 'my_theme_var_setup' );
}
たくさん使うことになるので、「関数が既に存在していたら何もしない 」を追加。
既に乱用前提です、、、
参考にした記事では「 add_action」の引数にカンマが付いていなくてエラーが起き、気が付かなくてちょっと焦った。
PHP5あたりだとこれでもエラーは起きない。ダブルコーテーションで括ってあっても同様。
3年くらい以上前のサンプルではよくあることなので、まずカンマを疑おう。
呼び出し
global $my_theme_var_title;
echo '<h1>呼び出されたグローバル変数は[' . $my_theme_var_title . ']です。</h1>';
functionsに「$my_theme_var_title = ‘○○○’;」とだけ書いても関数は追加できますが、「get_template_part()」で呼び出されたテンプレートからは呼び出せません。
数字、真偽、短いテキスト、url、くらいならこれで。