Администратор плагина Wordpress перенаправляет и возвращает ошибки - PullRequest
0 голосов
/ 09 октября 2011

Извинения, но я спрашивал об этом на сайте WordPress, но, кажется, его не просмотрели, пока один ответил!Надеюсь, я не нарушаю никаких правил, публикуя здесь.

Я разрабатывал плагин для WordPress, в котором есть раздел администратора с формой для добавления и редактирования различных вещей.Теперь после того, как администратор отправил форму, которую я хотел перенаправить в случае успеха (чтобы показать обновленные значения) или показать различные сообщения об ошибках, если нет.Я получил ошибки заголовка от попытки wp_redirect и после просмотра SO я начал использовать метод add_action, чтобы я мог перенаправлять без сообщений об ошибках заголовка.Однако теперь у меня проблема в том, что мой массив ошибок теперь всегда равен нулю, даже если форма была отправлена ​​неправильно.Я определил переменную ошибок перед add_action и в функции в add_action у меня есть

   global $errors;

Если я сделаю var_dump из $ errors в функции, которая обрабатывает отправку, которую он заполняет, но затем на моей реальной страницеэто всегда пусто.Я предполагаю, что я не знаком с порядком вызова страниц в 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

, всегда будет нулевым, даже если у него есть значения выше.Кто-нибудь получил какой-нибудь совет, как справиться с этим?Я новичок в разработке плагинов WP, так что не знаю, что лучше.

1 Ответ

1 голос
/ 09 октября 2011

ну, похоже, я с этим разобрался.

На реальной странице администратора мне нужно объявить мой массив $ errors как глобальный

global $errors;

Полагаю, что wordpress должен каким-то образом вставить страницу администратора в функцию, поэтому массив $ errors не ссылался на глобальную переменную.

...