How to debug save_post actions in WordPress?
Method 1:
if (isset($_POST)) die(print_r($_POST)); //answer by Tumas
Method 2:
create log file (my_logs.txt) in a folder, where you use this code:
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);
}
The best approach for me has been to use a function to log the values to wp-content/debug.log, lifted from 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 );
}
}
}
}
Then use the function like this in your save_post hook:
log_it($_POST);
log_it('The value for ' . $custom_field . ' is ' . $_POST[$custom_field]);
Make sure that wp-content/debug.log is writable, and that you have debugging enabled in wp-config.php:
@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
First Approach:
die(print_r($post_id));
Second Approach:
var_dump($post_id);
Third Approach:
<?php
echo <pre>{whatever you want to echo goes here}</pre>
?>
Or take any browser add-ons for console logging
may one of three help..Good Luck
The best solution I've found so far is storing the $_POST
in a session var for access later.