it-swarm.com.de

Wie löse ich eine $ _GET-Anfrage auf der Admin-Plug-In-Seite aus?

Ich habe dieses Formular in meiner Plugin-Funktion:

<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>

Und diese PHP-Bedingung früher in meinem Code:

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>
}

Aber nachdem ich auf den Button geklickt habe, werde ich zu wp-admin/options-general.php?do_it_hidden=run&do_it=DO+IT weitergeleitet, was nicht das ist, was ich tun möchte.

Nach dem Klick möchte ich nur die Seite neu laden und prüfen, ob die get-Bedingung erfüllt ist oder nicht.

Wie geht das?

BEARBEITEN:

Das Problem ist, dass ich, nachdem ich auf den Button geklickt habe, auf eine völlig andere Seite weitergeleitet werde. Mein Plugin befindet sich hier: options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php aber ein Klick auf den Button wirft mich hierhin: options-general.php?do_it_hidden=run&do_it=DO+IT

1
Derfder

Das sollte funktionieren

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
Shazzad

Gelöst! Ich finde, dass GET überhaupt nicht funktioniert! Sie müssen POST verwenden und in der Formularaktion Folgendes eingeben:

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

Verdammt! Es ist manchmal so schwer, einfache Aufgaben in WP zu erledigen;)

1
Derfder

Verwenden Sie eine Umleitung in Ihrem Formularhandler:

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

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

Der Benutzer wird dann zu einer sauberen URL weitergeleitet und bemerkt kaum die kurze Änderung der URL. Oder verwenden Sie eine POST -Anforderung, um eine geänderte URL vollständig zu vermeiden.

0
fuxia
<form method="get" action="do_it.php" enctype="multipart/form-data">

In den Aktionsteil Ihres Formulars sollten Sie die PHP-Datei einfügen, die für die Verarbeitung dieser verborgenen Formularvariablen verantwortlich ist. Wenn das Formular gesendet wird, werden diese Informationen an die von Ihnen angegebene Datei übergeben. Wenn Sie dieses Feld leer lassen, wird wieder die aktuelle Seite angezeigt, auf der Sie sich gerade befinden.

Zum Beispiel wird das allgemeine Optionen-Formular wie folgt an die options.php im Admin geleitet

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

Diese Datei wird verwendet, um die Beitragsinformationen zu verarbeiten, und der Benutzer wird dann wie folgt auf die Anzeigeseite umgeleitet.

wp_redirect( admin_url( 'options-general.php?updated=true' ) );
0
meekbot
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
codepixlabs