Ich schreibe ein Plugin, das ein Formular verwendet, um einige Daten an sich selbst weiterzuleiten.
Gibt es eine Möglichkeit, dies "The WordPress Way" zu tun?
Beispielformularcode (auf einer benutzerdefinierten Untermenüseite, die unter "Extras" hinzugefügt wurde):
<form action="<?php echo get_admin_url() . 'admin-post.php'; ?>" method="post">
<input name="some_input" type="text">
<input name="other_input" type="text">
</form>
Dann auf der logischen Seite des Plugins:
function my_process_form_data() {
// Process the form data here and return the results
}
add_action( 'admin_post', 'my_process_form_data' );
Nachdem ich das Formular verarbeitet und die resultierenden Daten (als etwas großes Array gespeichert) gespeichert habe, wie kann ich diese Daten am besten an die von mir erstellte benutzerdefinierte Untermenüseite zurückgeben?
Ich verstehe, dass es einige Optionen gibt:
- Anstatt auf "admin-post.php" zu posten, könnte ich direkt auf der Seite posten. Dies führt jedoch zu unordentlichem Code und unordentlichen Bedingungen (dh wenn Ergebnisse vorliegen, laden Sie diese, andernfalls laden Sie diese. Idealerweise sollten das Template und die Logik getrennt gehalten werden.
- Verwenden Sie wp_redirect und speichern Sie die Daten in der URL, zu der sie umgeleitet werden. Ich habe jedoch eine große Anzahl von Daten, die ich an den Endbenutzer zurückgeben kann. Dies ist also keine Option.
- Serialisieren Sie die Daten und speichern Sie sie vorübergehend in der Datenbank über Transienten oder Optionen. Deaktivieren Sie die Daten in der Datenbank, sobald der Benutzer sie gesehen hat. Aber das fühlt sich sehr "hackisch" an.
Irgendwelche Vorschläge, wie ich diese große Datenmenge "auf WordPress-Weise" auf meine benutzerdefinierte Untermenüseite zurückbringen kann?
plugin-development
forms
member8888
quelle
quelle
Antworten:
Die WordPress-Methode dazu besteht darin, den
admin_post
Hook überhaupt nicht zu verwenden. Da diese Frage vor einiger Zeit ruhig gestellt wurde, frage ich mich, ob damals eine Option verfügbar war.Auf jeden Fall sollten Sie eine benutzerdefinierte Einstellungsseite erstellen . Schauen Sie sich das vollständige Beispiel im verlinkten Beitrag an. Sie müssen für jedes Feld einen Rückruf erstellen.
quelle