使用关联数组添加操作(_A)

时间:2019-09-03 作者:Tahi Reu

我正在尝试从体内的do\\u操作获取以下参数:

do_action( \'custom_action\',  array( \'product_id\' => $product_id ,  \'outbiddeduser_id\' => $outbiddeduser, \'log_id\' => $log_id ) );
我试着这样做:

    add_action(\'custom_action\', \'test\', 10, 3);
    function test($product_id, $outbiddeduser_id, $log_id) {
         $a = $product_id;
         $b = $outbiddeduser_id;
         $c = $log_id; 

     echo $a . \', \' . $b . \', \' . $c;
    }
还有这个:

add_action(\'custom_action\', \'test\', 10, 1);
function test( $associative_array ) {
   $a = $associative_array[\'product_id\'];
   $b = $associative_array[\'outbiddeduser_id\'];
   $c = $associative_array[\'log_id\'];

   echo $a . \', \' . $b . \', \' . $c;
}
但它不起作用。我做错了什么?

1 个回复
SO网友:Tom J Nowell

您将动作传递给关联数组,因此挂钩函数将接收关联数组。如果我们像这样重新键入,会更清晰一些:

$associative_array = array(
    \'product_id\' => $product_id ,
    \'outbiddeduser_id\' => $outbiddeduser,
    \'log_id\' => $log_id
);
do_action( \'woocommerce_simple_auctions_outbid\',  $associative_array );
因此:

add_action(\'woocommerce_simple_auctions_outbid\', \'test\', 10, 1);
function test( $associative_array ) {
它以数组的形式出现,因为这就是你所经历的。中没有对阵列进行神奇的解包do_action

相关推荐

为内置钩子调用do_action和Apply_Filters是否安全?

我正在开发一个插件,它需要复制一些内置的WordPress逻辑。(此逻辑不能用任何内置方法调用,也不能独立连接到。)在这个动作序列中,WordPress的正常行为是调用动作挂钩(do_action(\'wp_login\', ...)) 和过滤器挂钩(apply_filters(\'login_redirect\', ...)).如果在对应于在Core中调用它们的时间点调用它们,那么直接从我的插件调用这些内置钩子是否安全(并且是可以接受的做法)?或者,其他与此相关的开发人员期望在非常特定的时间执行操作的风