我在使用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)触发事件。对不起,谢谢你的帮助!
答案 0 :(得分:0)
我认为你不应该禁用wp_cron我建议你使用wp_schedule_single_event它对我来说效果很好
wp_schedule_single_event( time() + 3600, 'update_expired_events_hourly' );