WordPress с PHP классом с использованием init: как передавать переменные между функциями?

Я хотел бы разбить функцию, используемую в Class, чтобы ее было легче понять, однако я не могу понять, как передавать переменные между двумя или более функциями, сохраняя хук WP INIT. Я упростил мой код для этого вопроса.

Я не уверен, правильно ли использовать несколько add_action в __construct.

Благодарю.

//called from template/index.php
do_action('foo');

//in template/fuctions.php
add_action( 'init', array ( 'foo', 'init' ) );

class foo
{

public $stillnotworking;

public static function init()
{
new self;
}

public function __construct()
{
add_action( 'foo', array ( $this, 'part1' ) );
add_action( 'foo', array ( $this, 'part2' ) );
}

public function part1()
{
$this->x = '123';
$stillnotworking = '123';
}

public function part2()
{
echo $this->x; //not working
echo $stillnotworking;
}

public function __toString()
{
echo $this->x; //not working
echo $stillnotworking;
}

function __destruct() {

}

}

0

Решение

Вы не объявили свой $x в вашем классе. Пытаться

add_action( 'init', array ( 'foo', 'init' ) );

class foo
{

public $x;
public $stillnotworking;

public static function init()
{
new self;
}

public function __construct()
{
add_action( 'foo', array ( $this, 'part1' ) );
add_action( 'foo', array ( $this, 'part2' ) );
}

public function part1()
{
$this->x = '123';
$stillnotworking = '123';
}

public function part2()
{
echo $this->x; //not working
echo $stillnotworking;
}

public function __toString()
{
echo $this->x; //not working
echo $stillnotworking;
}

function __destruct() {

}

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]