Передача аргумента с помощью add_action в WordPress! - PullRequest
0 голосов
/ 27 апреля 2011

У меня очень странная проблема в разработке WordPress,

в fucntions.php У меня есть следующий код

//mytheme/functions.php
$arg = "HELP ME";
add_action('admin_menu', 'my_function', 10, 1);
do_action('admin_menu',$arg );

function my_function($arg)
{   
    echo "the var is:".$arg."<br>";
}

вывод

the var is:HELP ME
the var is:

Почему функция повторяется 2 раза? Почему аргумент «помоги мне» был передан правильно, и во второй раз он не был передан?

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

То, что я пытаюсь сделать, просто! Я просто хочу передать аргумент функции, используя add_action?

Ответы [ 4 ]

0 голосов
/ 10 июля 2015

Используйте анонимную функцию, например:

function my_function($arg) {
  echo "the var is: $arg<br>";
}
$arg = "HELP ME";
add_action('admin_menu', function() { global $arg; my_function($arg); }, 10);

См. этот ответ для получения подробной информации.

0 голосов
/ 27 апреля 2011

Ну, во-первых, в вашей функции my_function () вы не определяете $ arg.Вы пытаетесь повторить что-то, чего нет - поэтому, когда оно возвращается, оно пустое.Так что вам нужно определить это.(отредактировано, чтобы добавить: вы пытаетесь определить это вне функции - но чтобы функция внутри распознала это, вы должны глобализировать аргумент.)

function my_function($arg) {  
    if(!$arg) $arg = 'some value'; 
    echo "the var is:".$arg."<br>";
}

когда вы добавляете_действие, вам нужно определить значение $ arg:

add_action('admin_menu', 'my_function', 10, 'my value');
0 голосов
/ 31 мая 2013

Вы пытались поставить свою функцию перед add_action?

0 голосов
/ 27 апреля 2011

Внутри "my_function" (пусть и вашей :)) напишите строку:

print_r(debug_backtrace());

http://php.net/manual/en/function.debug-backtrace.php
Это поможет вам узнать, что происходит.

Или вы можете использовать XDebug (на сервере разработки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...