Я знаю, что вы уже приняли ответ на этот вопрос; Тем не менее, я думаю, что есть гораздо лучший подход к проблеме переменной области, чем передача переменных в массив $GLOBALS
.
Возьмите файл functions.php
в вашей теме, например. Этот файл включен за пределы функций get_header()
и get_footer()
. На самом деле он заменяет все, что вы можете делать в своей теме (и я верю также в область действия плагина - хотя я должен был это проверить).
Если вы хотите установить переменную, которую хотите использовать в файлах верхнего / нижнего колонтитула, вам следует делать это в файле functions.php, а не загрязнять массив $ GLOBALS. Если у вас есть больше переменных, в которых вы хотите убедиться, рассмотрите возможность использования базового объекта Registry с геттерами / сеттерами. Таким образом, ваши переменные будут лучше инкапсулированы в области, которой вы можете управлять.
Реестр
Вот пример Registry
класса, с которого можно начать, если:
<?php
/**
* Registry
*
* @author Made By Me
* @version v0.0.1
*/
class Registry
{
# +------------------------------------------------------------------------+
# MEMBERS
# +------------------------------------------------------------------------+
private $properties = array();
# +------------------------------------------------------------------------+
# ACCESSORS
# +------------------------------------------------------------------------+
/**
* @set mixed Objects
* @param string $index A unique index
* @param mixed $value Objects to be stored in the registry
* @return void
*/
public function __set($index, $value)
{
$this->properties[ $index ] = $value;
}
/**
* @get mixed Objects stored in the registry
* @param string $index A unique ID for the object
* @return object Returns a object used by the core application.
*/
public function __get($index)
{
return $this->properties[ $index ];
}
# +------------------------------------------------------------------------+
# CONSTRUCTOR
# +------------------------------------------------------------------------+
public function __construct()
{
}
}
Сохраните этот класс в своей теме где-нибудь, например. /classes/registry.class.php
Включите файл вверху вашего functions.php
файла: include (get_template_directory (). '/Classes/registry.class.php');
Пример использования
Хранение переменных:
$registry = new Registry();
$registry->my_variable_name = "hello world";
Получение переменных:
echo '<h1>' . $registry->my_variable_name . '</h1>'
Реестр будет принимать любой тип переменной.
Примечание: Я обычно использую SplObjectStorage в качестве внутреннего хранилища данных, но я заменил его для обычного массива ole для этого случая.