admin-post.php
ist wie ein Controller eines armen Mannes für die Bearbeitung von Anfragen.
Dies ist in dem Sinne nützlich, dass Sie Ihre Anfrage nicht an einem alternativen Hook wie z. B. init
bearbeiten müssen, um festzustellen, ob auf den Superglobalen spezielle Schlüssel vorhanden sind, wie 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, die einen Aktionswert liefert, der mit dem der Aktion angegebenen Suffix übereinstimmt, immer aufgerufen wird.
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 auf die Notwendigkeit verzichten, dies zu überprüfen, !empty($_POST['action']) && $_POST['action'] === 'xyz'
da zu diesem Zeitpunkt die Verarbeitung für uns erledigt wurde .
Dies ist das Ergebnis der Angabe des Aktionsparameters und des Werts und der Veröffentlichung dieses Werts an die admin-post.php
URL.
Darüber hinaus ist es von Vorteil, dass admin-post.php
beides behandelt wird $_POST
und es $_GET
daher nicht erforderlich ist, 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 benutzen, es ist nur der Name, der dich abschreckt.
Übrigens sollten Sie wp_redirect()
den Benutzer auch daran erinnern, an einen akzeptablen Ort zurückzukehren, da beim Anfordern admin-post.php
nur ein weißer Bildschirm als Antwort zurückgegeben wird.