wp-cron – ¿Cómo usar wp_schedule_event en una clase?

Pregunta:

Esta es la primera vez que probé el método OOP para escribir una aplicación. Todavía no lo entiendo del todo. Actualmente tengo este cron hook:

if( !wp_next_scheduled( 'my_cron_hook' ) ) {
    //schedule the event to run daily
    wp_schedule_event( current_time( 'timestamp' ), 'daily', 'my_cron_hook' );
}
add_action('my_cron_hook',array($this,'do_daily_job'));

Parece que no se puede utilizar if dentro de una clase directamente. ¿Necesito poner todo el código anterior en la función __construct() ?

Además, encontré esto en la documentación de WordPress wp_schedule_event .

function my_activation() {
    if ( !wp_next_scheduled( 'my_hourly_event' ) ) {
        wp_schedule_event( current_time( 'timestamp' ), 'hourly', 'my_hourly_event');
    }
}
add_action('wp', 'my_activation');

¿Qué significa el gancho de dosis 'wp' aquí? Nunca he visto esto en la API de gancho. ¿Debería envolver mi código cron (arriba) en una función y poner esta acción 'wp' en la función __construct() , así?

function __construct() {
    add_action('wp', array($this,'my_activation'));
}

function my_activation() {
    if( !wp_next_scheduled( 'my_cron_hook' ) ) {
        //schedule the event to run daily
        wp_schedule_event( current_time( 'timestamp' ), 'daily', 'my_cron_hook' );
    }
    add_action('my_cron_hook',array($this,'do_daily_job'));
}   

Respuesta:

Agregue una acción fuera de la definición de su clase:

add_action('my_unique_plugin_event_hook', array($this,'hook'));

Y luego usa esto en tu evento:

wp_schedule_event(time(), 'daily', 'my_unique_plugin_event_hook');

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım