Cómo depurar el "Cron" wp_schedule_event de WordPress
¿Cómo puedo depurar problemas con el Cron de WordPress? Creo que se activará cuando los usuarios visiten tu sitio, pero cualquier error no se les mostrará, ya que las tareas se ejecutan de forma "asíncrona". Entonces, ¿cómo podría depurar los errores?
Yo uso wp schedule event

Puedes ejecutar WP cron manualmente llamando a: http://ejemplo.com/wp-cron.php?doing_wp_cron
Si no quieres que el cron automático se ejecute mientras estás depurando, entonces añade esto a tu archivo /wp-config.php
:
define('DISABLE_WP_CRON', true);
Si estás en un entorno de desarrollo y quieres mostrar información de depuración, llamándolo manualmente así te mostrará tu salida de depuración.
Alternativamente puedes usar la función error_log incorporada de PHP para registrar mensajes de texto en el registro de errores para depuración. Necesitarás usar esto en conjunto con los ajustes de WP_DEBUG, como menciona Rarst.

¿Es necesario el parámetro ?doing_wp_cron
? Consulta el tutorial de configuración manual de EasyCron.

Podrías depurar manualmente, creando una acción y ejecutando la acción Cron dentro. Así:
add_action( 'init', function() {
if ( ! isset( $_GET['the_cron_test'] ) ) {
return;
}
error_reporting( 1 );
do_action( 'this_is_cron_event_hook' );
die();
} );
Y accediendo a la dirección de tu sitio web: http://example.com?the_cron_test
Esto debería mostrarte cualquier error relacionado con la tarea cron.
Pero no tiene sentido hacerlo manualmente. Podrías usar el plugin Advanced Cron Manager PRO que hace esto por ti y además guarda el registro y otras estadísticas.

Podrías usar el plugin Cron-View. Allí podrás ver si tu tarea está a) registrada y b) cuál es el próximo tiempo de ejecución.
Además, podrías agregar un temporizador de programación más corto a tu evento (por ejemplo, cada 2 minutos) y probar tu método con más frecuencia en un sistema local. Usa el hook de filtro 'cron_schedules' para registrar nuevos intervalos de tiempo. Por ejemplo:
function my_additional_schedules($schedules) {
// intervalo en segundos
$schedules['every2min'] = array('interval' => 2*60, 'display' => 'Cada dos minutos');
return $schedules;
}
add_filter('cron_schedules', 'my_additional_schedules');

Puedes (y probablemente deberías en cualquier caso, con cron o sin él) configurar el registro de errores de PHP para capturar todos los errores.
