かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress テンプレートをまたいで使えるグローバル変数を作りたい。

header.phpfooter.phpなど別れているテンプレートで共通の表示や値を使いたい時、ハードコーディンしてると修正があった時面倒とか、管理画面から入力された値を使って出力したい場合、共通の変数にしてテンプレートで使いまわせると便利かもしれません。

global変数を作る

WordPressPHPでできていて全ページでfunction.phpが使われているので、ここにglobal変数を設定してしまえば、header.phpとかsingle.phpとかのテンプレート内でもこの変数を使うことができます。

■ function.php

<?php // function.php
function my_setup() {
  global $my_global_var;
  $my_global_var = "たーのしー!";
}
add_action( 'after_setup_theme', my_setup );

下記のようにfunction.phpのトップレベルのスコープに変数定義を書いてもWordPressグローバル変数になるようです。

<?php // function.php
$my_global_var = "たーのしー!";

■ header.php や single.php などのテンプレートで使う

<?php
global $my_global_var;
echo  $my_global_var; // "たーのしー!"

当然WordPressのglobal変数や使用しているプラグインの変数を書換えてしまう可能性もあるので、変数を取得できる関数を作成する方が安全だとは思います。
独自のglobal変数を使う場合はWordPressのglobal変数を汚染しないようにprefixなどを付けた変数名を付けるのが良いと思います。


[参考]

国連でも通じる 世界の非ネイティブ英語術

国連でも通じる 世界の非ネイティブ英語術