似乎这个问题的所有答案最终都是语法错误,但我在这里没有看到。
我试图在这里设置一个每日作业,它将贯穿我所有的“假期”帖子,如果\\u simple\\u start\\u date(unix时间戳)与今天的日期相同,那么运行一些函数来更新usermeta。我调用的三个函数是在我的插件前面定义的,我知道它们是有效的,因为我在其他多个地方使用它们来完成与我在这里所做的完全相同的事情。唯一的区别是,这是一个预定的事件。
自从我设置了这个,它就没有运行过一次。
我正在使用define( \'DISABLE_WP_CRON\', true );
用于与其他一些正在运行日常任务的插件一起使用。然而,从我所读到的来看,这不应该引起这个问题。
我们当然非常感谢您的帮助。谢谢
add_action( \'wp\', \'pto_setup_schedule\' );
/**
* On an early action hook, check if the hook is scheduled - if not, schedule it.
*/
function pto_setup_schedule() {
if ( ! wp_next_scheduled( \'pto_daily_event\' ) ) {
wp_schedule_event( time(), \'daily\', \'pto_daily_event\');
}
}
add_action( \'pto_daily_event\', \'check_pto_request_date\' );
/**
* On the scheduled action hook, run a function.
*/
function check_pto_request_date() {
$loop = new WP_Query( array( \'post_type\' => \'vacation\') );
while ( $loop->have_posts() ) : $loop->the_post();
$request_start_time = (get_post_meta( $post->ID, \'_simple_start_date\',true) );
if (date(\'Ymd\') == date(\'Ymd\', $request_start_time)){
$current_user = $post->post_author;
$request_date = get_post_meta( $post->ID, \'_simple_start_date\',true );
$request_year = date("Y",$request_date);
$time_year= date("Y");
$request_time = get_post_meta($post->ID, \'_simple_total_hours\', true);
$request_type = get_post_meta($post->ID, \'_simple_vacation_type\', true);
update_days_requested((-1 * $request_time), $request_type, $current_user);
update_days_left((-1 * $request_time), $request_type, $current_user);
update_days_used($request_time, $request_type, $current_user);
}
endwhile;
}
最合适的回答,由SO网友:cybmeta 整理而成
我想你的问题可能在于$post->ID
. 在您的代码中$post
是未定义的变量。由于您在一个循环中,请尝试get_the_ID()
而不是$post->ID
:
$post_ID = get_the_ID();
$request_start_time = get_post_meta( $post_ID, \'_simple_start_date\', true );
if (date(\'Ymd\') == date(\'Ymd\', $request_start_time)){
$current_user = $post->post_author;
$request_date = get_post_meta( $post_ID, \'_simple_start_date\',true );
$request_year = date("Y",$request_date);
$time_year= date("Y");
$request_time = get_post_meta($post_ID, \'_simple_total_hours\', true);
$request_type = get_post_meta($post_ID, \'_simple_vacation_type\', true);
update_days_requested((-1 * $request_time), $request_type, $current_user);
update_days_left((-1 * $request_time), $request_type, $current_user);
update_days_used($request_time, $request_type, $current_user);
}