我遇到了类似的问题,但需要在当月的最后一天启动一个活动。我想出了一个替代解决方案,可以解决这个问题和我的问题。我没有修改日程安排,而是使用每日日程安排,如果必要的话,只需启动每月的行动。
首先,我在插件激活中添加了这样的代码来设置每日检查
function my_activation(){
// Set the cron job for the monthly cron
if( ! wp_next_scheduled ( \'maybe_monthly_cron\' ) ) {
// This will trigger an action that will fire the "monthly_cron" action on the last day of each month at 4:00 am UTC
wp_schedule_event( strtotime(\'04:00:00\'), \'daily\', \'maybe_monthly_cron\');
}
}
register_activation_hook( __FILE__, \'my_activation\' );
然后我添加了一个每日运行的作业,以查看是否需要启动每月cron
// Check if we need to fire the monthly cron action "monthly_cron"
function maybe_run_monthly_cron(){
$now = strtotime();
$this_day = date( \'j\', $now );
$days_this_month = date( \'t\', $now );
if( $this_day == $days_this_month ){
do_action( \'monthly_cron\' );
}
}
add_action( \'maybe_monthly_cron\', \'maybe_run_monthly_cron\' );
将其调整为1号点火(&A);15号,您可以将上面的代码调整为如下内容:
// Check if we need to fire the monthly cron action "monthly_cron"
function maybe_run_monthly_cron(){
$now = strtotime();
$this_day = date( \'j\', $now );
if( in_array( $this_day, array( 1, 15 ) ) ){
do_action( \'monthly_cron\' );
}
}
add_action( \'maybe_monthly_cron\', \'maybe_run_monthly_cron\' );
然后,您可以使用“monthly\\u cron”操作执行如下操作:
function my_monthly_cron(){
// Execute monthly or bimonthly code here...
}
add_action( \'monthly_cron\', \'my_monthly_cron\' );