видимо к wp_head нельзя прикрутить параметры напрямую, такой код работает:
$var = 1;
function name() {}
add_action('wp_head', 'name', 10);
function name_attached_function($var) {
echo "rezult:".$var;
}
add_action('name', 'name_attached_function', 10, 1);
do_action('name', $var);
смысл в том, чтобы навесить на wp_head пустую функцию, а уже к этой пустой функции присобачить функцию с параметрами.
wp_head взята для примера. Я не совсем понял как функции, которую цепляешь на хук передавать параметры. Из ответов слышал использовать глобальные переменные.. но этот вариант мне не нравиться..
Вроде как через do_action если я правильно понял можно передавать параметры для некоторых, но не всех хуков..
Модератор
Юрій
(@yube)
Вроде как через do_action если я правильно понял можно передавать параметры для некоторых, но не всех хуков..
do_action() как раз и определяет новый хук и параметры, которые могут передаваться его обработчикам. Хукам, определенным в движке/плагинах/теме, нельзя поменять количество параметров, не вмешиваясь руками в их код. А лезть руками в чужой код — mauvais ton (в сообществе Вордпресс).
add_action() задает имя функции — обработчика для указанного хука и количество принимаемых параметров (может быть меньше допустимого для хука, по умолчанию — 1). Функции передаются те параметры, которые указаны в соотв. do_action().
Поэтому Ваш «примитивный пример», в котором do_action и add_action используют разные имена хуков как бы не совсем годится для иллюстрации.
Вот примитивный пример хука и обработчика с двумя параметрами.
function my_hook_handler($arg_1, $arg_2) {
echo "arg_1 = $arg_1, arg_2 = $arg_2\n";
}
add_action('my_hook', 'my_hook_handler', 10, 2); # 2 - два параметра
do_action('my_hook', 'foo', 'bar');
> Из ответов слышал использовать глобальные переменные.. но этот вариант мне не нравиться..
Используйте классы (в том числе для написания кода) и их свойства, если просто глобальные не нравятся
Спасибо за ответы. Теперь есть представление как действовать дальше. 🙂