Wie debuggt man save_post-Aktionen in WordPress?

Lesezeit: 3 Minuten

Benutzeravatar von sgb
sgb

Ich habe ein benutzerdefiniertes Post-Meta generiert und bin bereit, es dem Meta eines Posts hinzuzufügen. Ich weiß, wie das geht. Jedoch, save_post bewirkt eine Umleitung, nachdem POST-Daten gesendet wurden. Das bedeutet, dass ich zum Dashboard weitergeleitet werde und den Zugriff auf meine POST-Daten verliere – daher kann ich nicht einfach debuggen.

Derzeit verwende ich so etwas wie:

add_action('save_post', 'something_process');

function something_process() {
   if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
       return;
   print_r($_POST);
}

Gibt es einen Weg zu leicht das debuggen?

  • Ich mache: die(print_r($_POST))

    – Tumas

    22. März 2012 um 13:51 Uhr

  • @Tumas: Ihre Lösung scheint praktisch für a schnell Debuggen. Du hättest es als setzen sollen Antworten anstatt es als Kommentar zu haben.

    – Giraldi

    12. April 2013 um 10:02 Uhr


  • @gmaggio meine Gedanken genau.

    – Bob Gregor

    25. Mai 2013 um 5:47 Uhr

Benutzeravatar von danblaker
Danblaker

Der beste Ansatz für mich war, eine Funktion zu verwenden, um die Werte in wp-content/debug.log zu protokollieren, von der entfernt http://fuelyourcoding.com/simple-debugging-with-wordpress:

if(!function_exists('log_it')){
 function log_it( $message ) {
   if( WP_DEBUG === true ){
     if( is_array( $message ) || is_object( $message ) ){
       error_log( print_r( $message, true ) );
     } else {
       error_log( $message );
     }
   }
 }
}

Verwenden Sie dann die Funktion wie folgt in Ihrem save_post-Hook:

log_it($_POST);
log_it('The value for ' . $custom_field . ' is ' . $_POST[$custom_field]);

Stelle sicher, dass wp-content/debug.log beschreibbar ist und dass du Debugging in wp-config.php aktiviert hast:

@ini_set('display_errors',0);
define( 'WP_DEBUG',         true );  // Turn debugging ON
define( 'WP_DEBUG_DISPLAY', false ); // Turn forced display OFF
define( 'WP_DEBUG_LOG',     true );  // Turn logging to wp-content/debug.log ON
define( 'WP_POST_REVISIONS', false); // Disables revision functionality

Benutzeravatar von T.Todua
T.Todua

Methode 1:

if (isset($_POST)) die(print_r($_POST)); //answer by Tumas

Methode 2:

Protokolldatei erstellen (meine_logs.txt) in einem Ordner, in dem Sie diesen Code verwenden:

add_action('save_post', 'something_process',11,11);
function something_process() 
{
    print_r($_POST);
    $tmp = fopen(dirname(__file__).'/my_logs.txt', "a+"); fwrite($tmp,"\r\n\r\n".ob_get_contents());fclose($tmp);
}

Benutzeravatar von sgb
sgb

Die beste Lösung, die ich bisher gefunden habe, ist die Speicherung der $_POST in einer Session-Var für den späteren Zugriff.

Erste Ansatz:

die(print_r($post_id));

Zweiter Ansatz:

var_dump($post_id);

Dritter Ansatz:

<?php
  echo <pre>{whatever you want to echo goes here}</pre>
?>

Oder nehmen Sie beliebige Browser-Add-Ons für die Konsolenprotokollierung

möge einer von dreien helfen..Viel Glück

Sie können Ihre Debug-Meldungen auch in einer WordPress-Option speichern und nach der Umleitung als Admin-Meldung anzeigen.

// display all notices after saving post
add_action( 'admin_notices', 'show_admin_notices', 0 );

// your custom save_post aciton
add_action( 'save_post', 'custom_save_post' );

function custom_save_post() {
    store_error_in_notices_option( 'my debug message' );
}

function store_error_in_notices_option( $m ) {
    if ( ! empty( $m ) ) {
        // store error notice in option array
        $notices = get_option( 'my_error_notices' );
        $notices[] = $m;
        update_option( 'my_error_notices', $notices );
    }
}

function show_admin_notices() {
    $notices = get_option( 'my_error_notices' );
    if ( empty( $notices ) ) {
        return;
    }
    // print all messages
    foreach ( $notices as $key => $m ) {
        echo '<div class="error"><p>' . $m . '</p></div>';
    }

    delete_option( 'my_error_notices' );
}

Benutzeravatar von mike23
Mike23

Ich verwende dies für eine schnelle formatierte Ausgabe:

die( '<pre>' . print_r( $_POST, true ) . '</pre>');

1403980cookie-checkWie debuggt man save_post-Aktionen in WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy