Heim >CMS-Tutorial >WordDrücken Sie >Fehler beim Save_Post Hook in WordPress anzeigen
Handhabung und Anzeigen von Fehlern aus dem WordPress save_post
Haken: Drei Ansätze
WordPress fehlt eine einzelne, standardisierte Methode zum Verwalten und Anzeigen von Fehlern, die aus dem save_post
-Haken stammen. Es gibt jedoch mehrere wirksame Strategien mit jeweils eigenen Stärken und Schwächen. In diesem Artikel werden drei herausragende Ansätze untersucht: Verwenden der globalen $_SESSION
globalen, nutzenden WordPress -Transienten und Verwendung von GET -Parametern in Weiterleitungen.
Die Komplexität ergibt sich aus der nachsparenden Umleitung von WordPress. Nachdem der save_post
Hook ausgeführt wurde, wird der Benutzer umgeleitet, der den Ausführungs -Thread durchbricht und den Zugriff auf globale Variablen verliert. Daher ist ein Mechanismus erforderlich, um Fehlerinformationen von der Speicheraktion auf die umgeleitete Seite zu übertragen.
Methode 1: Verwendung des $_SESSION
globalen
Diese einfache Methode speichert die Fehlermeldung in der globalen Variablen $_SESSION
. Es ist einfach zu implementieren und vermeidet Datenbankinteraktion.
<code class="language-php">if ( !session_id() ) { session_start(); } if ($error) { $_SESSION['my_plugin_errors'] = $error->get_error_message(); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( isset( $_SESSION['my_plugin_errors'] ) ) { ?> <div class="error"> <p><?php echo $_SESSION['my_plugin_errors']; ?></p> </div> <?php unset( $_SESSION['my_plugin_errors'] ); } }</code>
Methode 2: Verwendung von WordPress -Transienten
Transienten liefern einen WordPress-nativen Caching-Mechanismus. Sie speichern Daten mit einer Ablaufzeit, verwenden den Objektcache, falls verfügbar
<code class="language-php">if ($error) { set_transient("my_save_post_errors_{$post_id}_{$user_id}", $error, 45); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( $error = get_transient( "my_save_post_errors_{$post_id}_{$user_id}" ) ) { ?> <div class="error"> <p><?php echo $error->get_error_message(); ?></p> </div> <?php delete_transient("my_save_post_errors_{$post_id}_{$user_id}"); } }</code>
Methode 3: Anhängen eines GET -Parameters an die Umleitung von URL
Dies spiegelt den eigenen Ansatz von WordPress zum Anzeigen von Aktualisierungsnachrichten wider. Der Fehlercode wird als Abfrageparameter zur Umleitungs -URL hinzugefügt.
<code class="language-php">if ($error) { add_filter('redirect_post_location', function( $location ) use ( $error ) { return add_query_arg( 'my-plugin-error', $error->get_error_code(), $location ); }); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( isset( $_GET['my-plugin-error'] ) ) { // Handle error based on error code (switch statement) ?> <div class="error"> <p><?php // Display error message based on $_GET['my-plugin-error'] ?></p> </div> <?php } }</code>
Schlussfolgerung
Die optimale Methode hängt vom spezifischen Kontext ab. Transienten bieten ein gutes Gleichgewicht zwischen WordPress -Integration und Leistung, während der GET -Parameteransatz die beste Leistung bietet, jedoch eine sorgfältigere Verwaltung von Fehlermeldungen erfordert. Die $_SESSION
-Methode ist am einfachsten, aber in verschiedenen WordPress -Umgebungen weniger zuverlässig. Wählen Sie die Methode aus, die Ihren Anforderungen und Projektskala am besten entspricht.
Das obige ist der detaillierte Inhalt vonFehler beim Save_Post Hook in WordPress anzeigen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!