web-dev-qa-db-ja.com

アクションを通じて機能にパラメーターを渡す

変数の値をdo_actionに渡してから結果の関数で使用しようとしていますが、機能していません。アクションはwoocommerceチェックアウトで起動されているので、$ checkout変数も渡します。これは問題なく機能しています。下記の簡単な例:

add_action( 'my_action', 'my_function' );
function my_function( $checkout, $myvar ) {
  var_dump ($checkout); //Works fine
  var_dump ($myvar); //Returns NULL
}

そしてテンプレートのアクションを以下のように呼び出します。

$myvar = 1;
do_action( 'my_action', $checkout, $myvar );

関数内で$ myvarにまったくアクセスできません。

1
Lewis Donovan

add_action()add_filter() 4つのパラメータを取る:string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1

それで、あなたが期待している関数は1つ以上のパラメータを取り、それからそれが4番目のパラメータとして受け入れるパラメータの数をadd_action()に渡すだけです。あなたの場合は、

add_action ('my_action', 'my_function', 10, 2) ;