Вместо этого
public function pcieh_shortcodes_init() {
$data = $this->data;
var_dump($data); //Return an array which is Expected
function pcieh_shortcode($atts = [], $content = null) {
global $data;
var_dump($data); //Return NULL
}
add_shortcode('pcieh', 'pcieh_shortcode');
}
Почему бы не это
public function pcieh_shortcodes_init() {
$data = $this->data;
var_dump($data); //Return an array which is Expected
add_shortcode('pcieh', [$this,'pcieh_shortcode']);
}
public function pcieh_shortcode($atts = [], $content = null) {
var_dump($this->data); //Return NULL
}
Тогда нет необходимости в global
или каких-либо безобразиях, связанных с ним.Вполне допустимо передать класс и метод в виде массива.
В основном WordPress использует call_user_func
для вызова этого в любом случае.
http://php.net/manual/en/function.call-user-func.php
ОБНОВЛЕНИЕ
Я должен был отметить, что в исходном коде вопроса, даже если вы все же заставили его работать, у вас нет ссылки на фактический экземпляр этого класса, поэтому любое значение, которое вы устанавливаете вданные (после назначения краткого кода и глобального), вероятно, в любом случае были бы потеряны.Другими словами, вы потеряете состояние текущего объекта и любых данных, которые он содержит.
Таким образом, используя фактический экземпляр $this
, вы можете быть уверены, что имеете дело с экземпляром, который хотите.