it-swarm.com.de

Was ist die eigentliche Absicht für admin-post.php?

Auf der Suche nach einer ordnungsgemäßen Bearbeitung von Formularen in Plugins für Benutzer (Frontend) bin ich auf diesen Artikel Bearbeitung von POST Requests the WordPress Way gestoßen, in dem admin-post.php für diesen Zweck empfohlen wird. Wenn wir in den Header schauen, können wir eine Bestätigung finden:

 /**
 * WordPress Generic Request (POST/GET) Handler
 *
 * Intended for form submission handling in themes and plugins.
 *
 * @package WordPress
 * @subpackage Administration
 */

Mein Hauptanliegen ist, dass diese Methode aus dem Admin-Teil von WP Code stammt und die Verwendung in Nicht-Admin-Tasks zu Unklarheiten führt.

Kann irgendjemand (insbesondere WP Autoren) bestätigen, dass diese Ansatzabsicht wirklich ganzheitlich oder nur administrativ ist, wie ich denke?

7

admin-post.php ist wie der Controller eines schlechten Mannes für die Bearbeitung von Anfragen.

Dies ist insofern nützlich, als Sie Ihre Anforderung nicht mit einem alternativen Hook wie init verarbeiten und prüfen müssen, ob auf den Superglobalen spezielle Schlüssel vorhanden sind, z.

function handle_request() {

    if ( !empty($_POST['action']) && $_POST['action'] === 'xyz' ) {
        //do business logic
    }

}

add_action('init', 'handle_request');

Stattdessen können Sie mit admin-post.php eine Rückruffunktion angeben, die bei jeder Anforderung aufgerufen wird, die einen Aktionswert liefert, der mit dem für die Aktion angegebenen Suffix übereinstimmt.

function handle_request() {

    //do business logic here...

}

add_action( 'admin_post_handle_request', 'handle_request' );
add_action( 'admin_post_nopriv_handle_request', 'handle_request' );

Im obigen Beispiel können wir darauf verzichten, auf !empty($_POST['action']) && $_POST['action'] === 'xyz' zu prüfen, da zu diesem Zeitpunkt die Verarbeitung für uns erledigt wurde.

Dies ist das Ergebnis der Angabe des Aktionsparameters und des Aktionswerts und der Veröffentlichung dieses Werts unter der URL admin-post.php.

Darüber hinaus ist von Vorteil, dass admin-post.php sowohl $_POST als auch $_GET verarbeitet. Es ist daher nicht erforderlich, zu überprüfen, um welche Art von Methode es sich bei der Anforderung handelt, es sei denn, Sie möchten eine komplexere Verarbeitung durchführen.

Endeffekt:

Es ist sicher zu bedienen, es ist nur der Name, der Sie abschreckt.

Übrigens sollten Sie auch daran denken, dass wp_redirect() der Benutzer an einen akzeptablen Ort zurückkehrt, wenn er admin-post.php anfordert, und als Antwort nichts als einen weißen Bildschirm zurückgibt.

10
userabuser

Die Verwendung der nopriv-Behandlung (für nicht angemeldete Benutzer) in admin-post.php scheint ziemlich klar zu sein, dass diese sowohl für die Frontend- als auch für die Backend-Formularbehandlung verwendet werden kann, ähnlich wie admin-ajax.php verwendet werden kann.

2
majick