php - sistema - wp cron plugin
Wordpress cronjob cada 3 minutos (3)
hay muchos post en stackoverflow con este tema pero (no sé por qué) nada funcionará para mí.
Lo que tengo
function isa_add_every_three_minutes( $schedules ) {
$schedules[''every_three_minutes''] = array(
''interval'' => 180,
''display'' => __( ''Every 3 Minutes'', ''textdomain'' )
);
return $schedules;
}
add_filter( ''cron_schedules'', ''isa_add_every_three_minutes'' );
function every_three_minutes_event_func()
{
// do something
}
wp_schedule_event( time(), ''every_three_minutes'', ''every_three_minutes_event_func'' );
¿Alguna idea de lo que estoy haciendo mal?
Parece que te olvidaste de usar el comando add_action ()
Vea este ejemplo: http://wpguru.co.uk/2014/01/how-to-create-a-cron-job-in-wordpress-teach-your-plugin-to-do-something-automatically/
Primero de su importancia donde está este código, ¿está en tus funciones.php para tu tema? ¿O es un plugin personalizado que está desarrollando?
A través de mi experiencia, es más fácil depurar y activar cron a través de un complemento personalizado, usando ganchos de activación para activar y desactivar eventos. He tenido dificultades para activar eventos cron a través de funciones php antes, prefiero activar estos eventos a través de complementos personalizados.
Comenzaría con una estructura de plugins como esta:
- / mi-cron-plugin
- /my-cron-plugin/index.php
- /my-cron-plugin/my-cron-plugin.php
contenidos index.php:
<?php // silence is golden
Contenidos de my-cron-plugin.php:
<?php
/**
* Plugin name: My Custom Cron Plugin
* Description: Simple WP cron plugin boilerplate.
* Author: Your name
* Version: 0.1
*/
// Security reasons...
if( !function_exists( ''add_action'' ) ){
die(''...'');
}
// The activation hook
function isa_activation(){
if( !wp_next_scheduled( ''isa_add_every_three_minutes_event'' ) ){
wp_schedule_event( time(), ''every_three_minutes'', ''isa_add_every_three_minutes_event'' );
}
}
register_activation_hook( __FILE__, ''isa_activation'' );
// The deactivation hook
function isa_deactivation(){
if( wp_next_scheduled( ''isa_add_every_three_minutes_event'' ) ){
wp_clear_scheduled_hook( ''isa_add_every_three_minutes_event'' );
}
}
register_deactivation_hook( __FILE__, ''isa_deactivation'' );
// The schedule filter hook
function isa_add_every_three_minutes( $schedules ) {
$schedules[''every_three_minutes''] = array(
''interval'' => 180,
''display'' => __( ''Every 3 Minutes'', ''textdomain'' )
);
return $schedules;
}
add_filter( ''cron_schedules'', ''isa_add_every_three_minutes'' );
// The WP Cron event callback function
function isa_every_three_minutes_event_func() {
// do something
}
add_action( ''isa_add_every_three_minutes_event'', ''isa_every_three_minutes_event_func'' );
Después de haber configurado este complemento, el evento debe activarse tras la activación del complemento. Para probar si funciona, use este complemento: https://wordpress.org/plugins/wp-crontrol/
Otro buen recurso para entender cómo funciona el cron de WP es: https://developer.wordpress.org/plugins/cron/
add_action()
usar add_action()
para conectar su función al evento programado.
add_action( ''isa_add_every_three_minutes'', ''every_three_minutes_event_func'' );
Aquí está el código completo.
// Add a new interval of 180 seconds
// See http://codex.wordpress.org/Plugin_API/Filter_Reference/cron_schedules
add_filter( ''cron_schedules'', ''isa_add_every_three_minutes'' );
function isa_add_every_three_minutes( $schedules ) {
$schedules[''every_three_minutes''] = array(
''interval'' => 180,
''display'' => __( ''Every 3 Minutes'', ''textdomain'' )
);
return $schedules;
}
// Schedule an action if it''s not already scheduled
if ( ! wp_next_scheduled( ''isa_add_every_three_minutes'' ) ) {
wp_schedule_event( time(), ''every_three_minutes'', ''isa_add_every_three_minutes'' );
}
// Hook into that action that''ll fire every three minutes
add_action( ''isa_add_every_three_minutes'', ''every_three_minutes_event_func'' );
function every_three_minutes_event_func() {
// do something
}
?>