Как я могу передать свои собственные переменные между функциями, привязанными к хукам действий в плагинах WordPress - PullRequest
0 голосов
/ 10 июня 2019

Я пишу плагин Wordpress на PHP и хочу иметь возможность использовать переменную, которая не предусмотрена в плагине ловушки действий (другого отдельного). Я хочу передать переменную из одного хука в другой.

Эти функции находятся в моем файле functions.php (не в файле функций темы).

Я не могу вкладывать хуки действий, потому что они происходят в разное время, в частности, тот, который с переменной, происходит после того, где я хочу его.

Я не думаю, что смогу использовать замыкание, потому что переменная находится внутри другого хука.

Я не могу использовать класс, потому что, если я установлю класс в действии 1, то он не будет в области действия в действии 2, и мне нужно будет создать новый.

Я мог бы использовать глобальную или получить доступ к БД, но я чувствую, что должен быть лучший способ, чем любой из них.

действие 1 - мой плагин

function foo($level){
  do stuff
}
add_action('change-membership', 'foo');

действие 2 - мой плагин

function bar(){
  if($level==0){
    do stuff
  }
}
add_action('put-in-checkout-text', 'bar');

Плагин для других разработчиков

do_action('change_membership', $level);

// a little later
do_action('put_in_checkout_text');

$ уровней существует в то время, когда я этого хочу, но в этот момент нет ловушки действий, чтобы захватить ее.

1 Ответ

0 голосов
/ 10 июня 2019

Я понимаю, что у вас есть что-то вроде этого:

// Plugin 2, the plugin you are writing.
do_action('put_in_checkout'); // --> bar()

// Plugin 1, another author's plugin
$level = "definition of level";
do_action('change_membership', $level); // --> foo($level)

Вы говорите, что вам нужно получить доступ к $level до того, как произойдет действие change_membership, поэтому $level может быть не определено при этом.время.Даже если это так, он может находиться в области, недоступной для функций-обработчиков put_in_checkout.На всякий случай проверьте, создает ли плагин 2 глобальную переменную, где у вас есть доступ к значению $level.В противном случае вам нужно взять его из базы данных (если он там хранится) или как-то сгенерировать.

...