道歉,但我确实在wordpress网站问过这个问题,但它似乎还没有被单独回答!希望我不会通过重新发布来破坏任何规则。
我一直在开发一个wordpress插件,它有一个带有表单的管理部分,用于添加和编辑各种内容。现在,管理员提交表单后我想重定向成功(显示更新的值)或显示各种错误消息,如果没有。我从尝试wp_redirect获得了头错误,在查看之后我开始使用add_action方法,因此我可以重定向而不会出现头错误消息。我现在遇到的问题是,即使表单未正确提交,我的错误数组现在也始终为null。我在add_action之前和add_action中的函数中定义了error变量
global $errors;
如果我在处理提交的函数中执行了$ error的var_dump,则会填充它,但是在我的实际页面上它总是为空。我的猜测是我不熟悉WP中调用页面的顺序而我错过了什么,但是其他人怎么处理这个?
//the index.php for pluging
//require necessary files
$errors = null;
include('plugin_file.php');
//Tie into wordpress hooks
add_action('widgets_init', 'plugin::register_func');
add_action('admin_menu', 'plugin::add_menu_item');
add_action('admin_init', 'plugin::check_form_submission');
然后表单提交类似于
//THE Class file for my plugin
static function check_form_submission(){
global $errors;
if(empty($_POST['some_field'])){
$errors['some-error'] = 'some error';
}
if(!$errors){
//handle and redirect here
}else{
var_dump($errors); // does have values
}
}
在显示表单的实际管理页面中
//actual admin page that shows in WP
var_dump($errors); // returns NULL
即使它具有上述值,也将始终为null。任何人有任何建议如何处理这个?我是WP插件开发的新手,所以不确定最佳实践是什么。
答案 0 :(得分:1)
在实际的管理页面上,我需要将$ errors数组声明为全局
global $errors;
我猜wordpress必须以某种方式将管理页面打包成一个函数,因此$ errors数组没有引用全局变量。