我有一个自定义的注册表单, 该表单利用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);
?>
评论前必须登录!
注册