Vielleicht etwas spät, aber ich bin darauf gestoßen, als ich Probleme hatte, es herauszufinden, also dachte ich, ich würde das, was ich herausgefunden habe, für zukünftige Leute liefern.
Ich habe festgestellt, dass die Grundprinzipien darin bestehen, eine versteckte Eingabe zu benennen action
, deren Wert eine benutzerdefinierte Set-ID ist. Zum Beispiel
<input name='action' type="hidden" value='custom_form_submit'>
Mit dieser Eingabe können Sie Ihre Formularaktion admin-post.php
festlegen, die auf eine Aktion verweist . Wir setzen diese Aktion mit admin_post_custom_form_submit
.
Um die Dinge komplizierter zu machen, können wir ein verwenden, wp_nonce_field
das meiner Meinung nach ein grundlegendes Sicherheitssachen ist. Grundsätzlich wird ein zufälliger $ _POST-Wert hinzugefügt. Meinetwegen.
Als nächstes wollen wir unsere Aktion so einstellen:
add_action('admin_post_custom_form_submit','our_custom_form_function');
Wenn also ein Formular gesendet wird admin-post.php
und ein Aktionswert custom_form_submit
der Funktion our_custom_form_function
aufgerufen wird! : D.
function our_custom_form_function(){
//print_r($_POST);
//you can access $_POST, $GET and $_REQUEST values here.
wp_redirect(admin_url('admin.php?page=your_custom_page_where_form_is'));
//apparently when finished, die(); is required.
}
Jetzt sagst du, du bekommst eine weiße Seite. Dies liegt daran, dass wir zu unserem Formular zurückkehren müssen. Ich habe eine einfache verwendetwp_redirect()
Hoffe das hat geholfen :) Ich werde versuchen herauszufinden, wie ich eine Validierung durchführen und Fehler an unser Weiterleitungsformular zurückgeben kann. Ich denke, die einfachste Idee wäre, einen $_GET
Wert zu machen und diesen auf unserer Seite zu finden, aber es ist nicht großartig, oder?
Ich habe auch festgestellt, dass einmal eingereicht $_POST
gelöscht wird !! DX Dies hat wahrscheinlich mit der Umleitung zu tun. Ich werde googeln und sehen, was ich finden kann: d
Hoffe das hat geholfen :)
AKTUALISIEREN
Ich habe noch etwas gearbeitet und festgestellt, dass die einzige Möglichkeit, Werte zurückzugeben, die Verwendung der Variablen $ _GET ist. Auf diese Weise können Sie alle Post-Werte erneut eingeben. Vergessen Sie nicht zu verwenden, urlencode()
um sicherzustellen, dass Sonderzeichen wie '@' usw. enthalten sind.
Ich hatte mehr als eine Seite mit dem, woran ich arbeitete, also habe ich 2 verschiedene Weiterleitungen zu den verschiedenen Seiten durchgeführt und die Fehler usw. eingefügt. Die haben über meinem Formular nach ihnen gesucht.
Eine weitere praktische Funktion. http_build_request()
kann Arrays in 'url sichere' Arrays verwandeln, so dass Sie sie über $ _GET-Anfragen usw. senden können.
admin-post.php
undadmin_post
Aktion verwenden, müssen Sie zurück zu Ihrer Plugin-Seite umleiten .