表单提交或显示错误后重定向插件

时间:2011-10-08 作者:TommyBs

我一直在开发一个wordpress插件,它有一个带有表单的管理部分,可以添加和编辑各种内容。现在,在管理员提交表单后,如果成功,我想重定向表单(以显示更新的值),如果不成功,则显示各种错误消息。我在尝试wp\\u重定向时遇到了标头错误,在仔细查看之后,我开始使用add\\u操作方法,以便在没有标头错误消息的情况下重定向。但我现在的问题是,我的错误数组现在总是空的,即使表单没有正确提交。我在add\\u action之前定义了errors变量,在add\\u action中的函数中

   global $errors;
如果我在处理提交的函数中执行$errors的var\\u转储,则会填充它,但在我的实际页面上,它始终为空。我的猜测是,我不熟悉在WP中调用页面的顺序,我遗漏了一些东西,但其他人是如何处理的?

  //the index.php for pluging
  //require necessary files
  global $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 个回复
最合适的回答,由SO网友:TommyBs 整理而成

看来我解决了这个问题。

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

global $errors;
我猜wordpress必须以某种方式将管理页面装箱到一个函数中,因此$errors数组没有引用全局变量。

结束

相关推荐

__FILE__ in WordPress plugins

我正在使用Sidebar Generator 在我所有的主题中。该插件在“plugins”目录下正常工作,但我想以某种方式将其嵌入到我的主题中,因此它不会显示在已安装的插件列表中。我刚刚复制了sidebar\\u生成器。php(幸运的是,整个代码都在一个文件中)到mytheme/插件,并将其包含在函数中。phprequire_once (MY_PLUGINS . \'/sidebar_generator.php\'); 现在,它适用于所有其他插件,但不适用于这个插件!这样,当我点击“侧栏”时