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 errorsif($errors){ global $exampleecho $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' ?>

【admin_post_ {action}调用的函数中全局变量的范围】我已将问题精确定位到范围问题, 该范围问题在执行功能后不再可用, 我相信这是由于操作钩子引起的, 但我不确定。
我的问题是我该如何进行这项工作?我如何使该全局在函数外部可用。
#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 errorsif($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); ?>

    推荐阅读