Wordpress插件管理员重定向和返回错误

时间:2011-10-09 10:11:26

标签: wordpress redirect wordpress-plugin

道歉,但我确实在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插件开发的新手,所以不确定最佳实践是什么。

1 个答案:

答案 0 :(得分:1)

好吧,看起来我已经解决了这个问题。

在实际的管理页面上,我需要将$ errors数组声明为全局

global $errors;

我猜wordpress必须以某种方式将管理页面打包成一个函数,因此$ errors数组没有引用全局变量。