个性化阅读
专注于IT技术分析

admin_post_ {action}调用的函数中全局变量的范围

我有一个自定义的注册表单, 该表单利用admin_post_ {action}钩子调用一个函数, 该函数对表单进行所有处理。 functions.php文件包含与此类似的功能。

<?php

    $example = 'test';

    function create_client_account(){
       //check username isn't a duplicate
       //check email isn't a duplicate
       //scrub all data
       //create an array of errors

      if($errors){
         global $example

         echo $example //outputs 'test'

         $example = new WP_Error();
         $example->add('test', $errors);

         var_dump($example) //outputs WP_Error object
      }

    }

   add_action( 'admin_post_create_account', 'create_client_account' );
   add_action( 'admin_post_nopriv_create_account', 'create_client_account' );
?>

然后我有一个模板文件page-register.php, 我尝试在其中访问全局变量, 但是它不起作用。所有处理都是正确的, 如果我在函数中执行var_dump($ example), 则所有输出都在那里。但是, 如果我在模板文件中执行此操作, 则输出为NULL。

<?php 
  global $example;
  var_dump($example); //outputs 'test'
?>

我已将问题精确定位到范围问题, 该范围问题在执行功能后不再可用, 我相信这是由于操作钩子引起的, 但我不确定。

我的问题是我该如何进行这项工作?我如何使该全局在函数外部可用。


#1


首先, 你需要在函数范围之外定义变量:

<?php 
$example = 0;

function create_client_account(){
       //check username isn't a duplicate
       //check email isn't a duplicate
       //scrub all data
       //create an array of errors

      if($errors){//you should set and assign this $errors somewhere too
         $GLOBALS['example'] = new WP_Error();
         $GLOBALS['example']->add('test', $errors);
      }
}

然后像以前一样尝试访问它

<?php 
  global $example;
  var_dump($example);
?>
赞(0) 打赏
未经允许不得转载:srcmini » admin_post_ {action}调用的函数中全局变量的范围
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏