web-dev-qa-db-fra.com

Comment déclencher une requête $ _GET dans la page du plugin admin?

J'ai ce formulaire dans ma fonction plugin:

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

Et cette condition php plus tôt dans mon 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>
}

Mais après avoir cliqué sur le bouton, je suis redirigé vers wp-admin/options-general.php?do_it_hidden=run&do_it=DO+IT, ce qui n’est pas ce que je veux.

Après le clic, je veux juste recharger la page et vérifier si la condition d'obtention est vraie ou non.

Comment faire ça?

EDIT:

Le problème est qu'après avoir cliqué sur le bouton, je suis redirigé vers une page complètement différente. Mon plugin se trouve ici: options-general.php?page=DD_Awesome_Plugin/DD_awesome_plugin.php mais cliquer sur le bouton me jette ici: options-general.php?do_it_hidden=run&do_it=DO+IT

1
Derfder

Cela devrait marcher

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

RESOLU! Je trouve que GET ne fonctionne pas du tout! Vous devez utiliser POST et dans l'action de formulaire, vous devez taper ceci:

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

Zut! Il est parfois si difficile de faire une tâche simple dans WP;)

1
Derfder

Utilisez une redirection dans votre gestionnaire de formulaire:

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

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

L'utilisateur sera alors redirigé vers une URL propre et remarquera à peine le changement d'URL abrégé. Ou utilisez une demande POST pour éviter de modifier complètement une URL.

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

Dans la partie action de votre formulaire, vous devez inclure le fichier php responsable du traitement de cette variable de formulaire masquée. Lorsque le formulaire est soumis, il transmet ces informations au fichier que vous spécifiez. Si elle est laissée en blanc, la page affichée sur votre page n'est pas ce que vous voulez.

Par exemple, le formulaire des options générales est dirigé vers le fichier options.php de l’administrateur, comme

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

Il utilise ce fichier pour traiter les informations de publication, puis redirige l'utilisateur de la manière suivante.

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