Как инициировать $ _GET, запрашивают в администраторской странице плагина?

У меня есть эта форма в моей сменной функции:

<form method="get" action="" enctype="multipart/form-data">
  <p class="submit">
    <input type="hidden" name="do_it_hidden" value="run">
    <input name="do_it" type="submit" class="button-primary" value="DO IT!"> 
  </p>
</form>

И это php условие ранее в моем коде:

if (isset($_GET['do_it_hidden'])) {
   // some code to execute here
} else {
   // just show the form
   <form method="get" action="" enctype="multipart/form-data">
     <p class="submit">
       <input type="hidden" name="do_it_hidden" value="run">
       <input name="do_it" type="submit" class="button-primary" value="DO IT!"> 
     </p>
   </form>
}

Но после нажатия на кнопку я перенаправляюсь к wp-admin/options-general.php?do_it_hidden=run&do_it=DO+IT который не является тем, что я хочу произойти.

После щелчка я просто хочу перезагрузить страницу и проверку, если получить условие верно или нет.

Как сделать это?

Править:

Проблема состоит в том что после того, как я нажимаю на кнопку, я перенаправляюсь к совершенно другой странице. Мой плагин расположен здесь: options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php но нажатие на кнопку бросает меня здесь: options-general.php?do_it_hidden=run&do_it=DO+IT

1
20.05.2013, 16:09
5 ответов

РЕШЕННЫЙ! Я нахожу, что ДОБИРАЮТСЯ, не работает вообще! Необходимо использовать POST, и в действии формы необходимо ввести это:

action="<?php admin_url('options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php'); ?>"

Черт! Иногда настолько трудно сделать простую задачу в WP ;)

1
19.02.2020, 22:54
  • 1
    Можно ли использовать ПОЛУЧИТЬ запрос однако при помощи <метод формы = "получает" действие = "<? php повторяют admin_url ('DD_Awesome_Plugin/DD_awesome_plugin.php');?>" enctype = "multipart/form-data">, Походит на Ваш хорошо с регистрацией, хотя, но просто требуемый, чтобы дать Вам некоторых к вашему сведению lol, я протестировал это на своем поле и оно работает, как предназначено, таким образом, это не просто догадка. –  meekbot 20.05.2013, 16:30
  • 2
    Поскольку Вы используете enctype="multipart/form-data" необходимо использовать POST так или иначе. Но да, действительно необходимо обеспечить корректный и полный URI, который Вы не делали. Это не отказ WordPress. Это - способ, которым работают Ваш браузер и HTML/HTTP. –  s_ha_dum 20.05.2013, 16:44
  • 3
    Да благодарят Вас за то исправление, жаль копия и вставка убежали от меня>. <с получить запросом Вы удалили бы enctype = "" атрибут. –  meekbot 20.05.2013, 16:52
  • 4
    Nop, не трудно сделать простую вещь в WP, просто протестировать мой ответ. –  Shazzad 12.12.2013, 21:48

Используйте перенаправление в своем обработчике форм:

if (isset($_GET['do_it_hidden'])) {
    // some code to execute here

    wp_redirect( admin_url( "options-general.php" ), 303 );
    exit;
}

Пользователь будет перенаправлен к чистому URL затем и едва заметит короткое изменение URL. Или используйте запрос POST для предотвращения измененного URL полностью.

0
19.02.2020, 22:54
  • 1
    Спасибо, я хотел что-то другое. Мое плохое, я сформулировал его плохо. Проверьте мой обновленный код в мой вопрос видеть то, что я имею в виду.Спасибо. Попытка –  Derfder 20.05.2013, 15:59
  • 2
    @Derfder мое предложение. Это делает то, что Вы просите. –  fuxia♦ 20.05.2013, 16:00
  • 3
    Так, когда я нажимаю на кнопку отправки, вместо того, чтобы перезагрузить текущую сменную страницу я перенаправляюсь где-то в другом месте. Так, мне нужно после щелчка пробегает мой код и проверяют ПОЛУЧИТЬ условие, и в моем случае это будет верно, и код будет выполнен, потому что я нажал, отправляют, и do_it_hidden отправляется. В стандарте php я сделал бы это как действие = "the_same_file_as_i_am_in" или возможно даже действие = "". Что вставить действие = "???" таким образом, это работает на сменной администраторской странице WP? –  Derfder 20.05.2013, 16:03
  • 4
    Действие должно быть admin_url( "options.php" ) или admin_url( "admin-post.php" ). Затем зарегистрируйте свой обработчик форм для того действия, сделайте работу и перенаправление. –  fuxia♦ 20.05.2013, 16:07
  • 5
    "Попытка мое предложение. Это делает то, что Вы просите". Проблема состоит в том что после того, как я нажимаю на кнопку, я перенаправляюсь к совершенно другой странице. Мой плагин расположен здесь: options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php но нажатие на кнопку бросает меня здесь: options-general.php?do_it_hidden=run&do_it=DO+IT –  Derfder 20.05.2013, 16:07
<form method="get" action="do_it.php" enctype="multipart/form-data">

В части действия Вашей формы необходимо включать php файл, который ответственен за обработку той скрытой переменной формы, когда форма будет отправлена, это передаст ту информацию файлу, который Вы указываете. Оставленный незаполненный это отправит назад на текущую страницу, Вы включены, который не является тем, что Вы хотите.

Например, общая форма опций направлена к options.php в администраторе как так

<form method="post" action="options.php" enctype="multipart/form-data">

Это использует тот файл для обработки информации о сообщении, затем перенаправляет пользователя к странице дисплея как так.

wp_redirect( admin_url( 'options-general.php?updated=true' ) );
0
19.02.2020, 22:54
  • 1
    хм, я обновил свое сообщение с дополнительной информацией. Мой файл, где расположен код, называют DD_awesome_plugin.php –  Derfder 20.05.2013, 16:10
  • 2
    В php настолько просто инициировать, получают формы. Разве существует ли некоторое учебное руководство для WP? Я не получаю его вообще. Я просто хочу выполнить различные части своего запутанного кода, в зависимости от которой формы отправляют, нажимается. –  Derfder 20.05.2013, 16:15
if (isset($_GET['do_it']) && $_GET['action'] =='do_it_hidden') {
   // some code to execute here
} else {
   // just show the form
   <form method="get" action="general.php?page=<?php echo $_REQUEST['page']?>" enctype="multipart/form-data">
     <p class="submit">
       <input type="hidden" action="do_it_hidden" value="run">
       <input name="do_it" type="submit" class="button-primary" value="DO IT!"> 
     </p>
   </form>
}
0
19.02.2020, 22:54

Это должно работать

if (isset($_GET['action']) && 'do_it_hidden' == $_GET['action'] ) {
   // some code to execute here
} else {
   // just show the form
   <form method="get" action="options-general.php">
     <p class="submit">
       <input type="hidden" name="action" value="do_it_hidden">
       <input type="hidden" name="page" value="<?php echo wp_unslash( $_REQUEST['page'] ); ?>">
       <input name="do_it" type="submit" class="button-primary" value="DO IT!"> 
     </p>
   </form>
}
1
19.02.2020, 22:54

Теги

Похожие вопросы