wp_schedule_event已计划但功能未触发

时间:2015-10-30 09:47:02

标签: php wordpress cron content-management-system

我在使用wp_schedule_event函数时遇到了一些麻烦,到目前为止我还没有找到任何解决方案。 事件是triggert,至少我在调用wp_next_scheduled( 'update_expired_events_hourly' )时看到下一个计划,但是到达时间时,什么也没发生。 当我手动调用它时,该功能也正常工作。我试图通过调用/wp-cron.php?doing_wp_cron来触发事件,但这也没有效果。

以下代码位于我的主题functions.php

有任何建议如何解决?

提前谢谢!

add_action( 'wp', 'expired_activation' );
add_action( 'update_expired_events_hourly', 'update_expired_events' );



function expired_activation(){
    if ( !wp_next_scheduled( 'update_expired_events_hourly' ) ) {
        wp_schedule_event(time(), 'hourly', 'update_expired_events_hourly');
    }
}

function update_expired_events(){
    // events query
    $args = array(
        'post_type'         => 'espresso_events',
        'post_status'       => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash'),
        'post_per_page'     => -1,
        'tax_query' => array(
        array(
            'taxonomy'  => 'espresso_event_categories',
            'field'     => 'slug',  
            'terms'     => 'ee_exp', // the expired category slug
            'operator'  => 'NOT IN',
            ),
       )
    );
    $events = new WP_QUERY($args);
    $today = strtotime(current_time( "Y-m-d H:i:s", $gmt =0 )); // get current date

     if ( $events->have_posts() ){
         while ( $events->have_posts() ){
            $events->the_post();

            //get event end date
            $event_end = strtotime( espresso_event_end_date( 'Y-m-d', 'H:i:s', false, false ) ); // get event end date

            if( $event_end - (60*60*24) < $today ){
                wp_set_object_terms( get_the_ID(), 'ee_exp', 'espresso_event_categories', true); // Add post to expired category
            }

         }
     }
}

我忘了提,那个定义('DISABLE_WP_CRON');在我的config.php中设置为false

----------------------编辑---------------------- 上面的代码正在运行。显然,唯一不起作用的是通过URL(/wp-cron.php?doing_wp_cron)触发事件。对不起,谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我认为你不应该禁用wp_cron我建议你使用wp_schedule_single_event它对我来说效果很好

wp_schedule_single_event( time() + 3600, 'update_expired_events_hourly' );