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?
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
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);
}
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' );
}
Mike23
Ich verwende dies für eine schnelle formatierte Ausgabe:
die( '<pre>' . print_r( $_POST, true ) . '</pre>');
140398 0 0 cookie-check Wie debuggt man save_post-Aktionen in WordPress? yes
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