web-dev-qa-db-fra.com

Routine horaire ne tirant pas (wp_schedule_event ())

Ceci est une version pratiquement copiée/collée de l'exemple horaire wp_schedule_event tiré du site .org. Son ne bouge pas ... et je sais que j'ai des visiteurs pour le "déclencher". C'est un peu pénible d'attendre une heure pour voir si ça va ou non.

Quelqu'un peut-il me dire où je vais mal? La seule chose à laquelle je peux penser, c'est que je l'exécute dans un thème, et peut-être que cela ne fonctionne que dans un plugin? Je suis perdu.

//set up hourly fetching of symbiocards
register_activation_hook( __FILE__, 'symbiostock_chron_activation' );
add_action( 'symbiostock_twicedaily_symbiocard_update', 'update_symbiocards' );

function symbiocards_activation() {
    if ( !wp_next_scheduled( 'symbiocards_hourly_event' ) ) {
        wp_schedule_event( time(), 'hourly', 'symbiocards_hourly_event');
    }
}
add_action('wp', 'symbiocards_activation');

function update_symbiocards() {

    $update = new network_manager();
    $sites  = $update->get_connected_networks();
    foreach ( $sites as $site ) {
        $update->fetch_symbiocard( $site[ 'address' ] );
    } //$sites as $site

    symbiostock_save_network_info();

    update_option('symbiocards_last_update', current_time( 'mysql' ));

    wp_mail( get_bloginfo( 'admin_email' ), '[symbiostock_network_update] Network Symbiocards Updated - ' . current_time( 'mysql' ), 'Network Symbiocards Updated - ' . current_time( 'mysql' ) );
}
3
user1915665

Dans votre exemple de code, vous avez:

wp_schedule_event( time(), 'hourly', 'symbiocards_hourly_event');

mais il n'y a pas de crochet symbiocards_hourly_event défini.

Si vous l'utilisez dans le fichier functions.php de votre répertoire de thèmes actuel, essayez plutôt cet extrait:

add_action( 'wp', 'symbiocards_activation' );
add_action( 'symbiocards_hourly_event', 'update_symbiocards' );

function symbiocards_activation() {
    if ( !wp_next_scheduled( 'symbiocards_hourly_event' ) ) {
        wp_schedule_event( time(), 'hourly', 'symbiocards_hourly_event' );
    }
}

function update_symbiocards() {
    wp_mail( get_bloginfo( 'admin_email' ), '[symbiostock_network_update] Network Symbiocards Updated - ' . current_time( 'mysql' ), 'Network Symbiocards Updated - ' . current_time( 'mysql' ) );
}

où vous devriez vous convaincre que la partie wp_mail() fonctionne et utilise la bonne adresse électronique.

Il existe de nombreux bons plugins cron manager que vous pouvez utiliser pour déboguer votre problème. Voici par exemple une vue duFFF Cron Manager:

cron view

10
birgire