WordPress允许您添加定制的cron时间表,这通常是您在这种情况下想要做的,与wp_schedule_event()
. 但是,它们是基于时间间隔而不是特定的日期/时间工作的。例如,
add_filter( \'cron_schedules\', \'addCustomCronIntervals\' );
function addCustomCronIntervals( $schedules )
{
$schedules[ self::PREFIX . \'debug\' ] = array(
\'interval\' => 60 * 2,
\'display\' => \'Every 2 minutes\'
);
return $schedules;
}
因此,您可以使用当前的方法来实现这一点,但您还需要设置一个瞬态,以确保不会每次加载页面时都发送电子邮件。
$firstThursday = date_i18n( \'Ymd\', strtotime( \'first thursday this month\', current_time( \'timestamp\' ) ) );
$today = date_i18n( \'Ymd\', current_time( \'timestamp\' ) );
if( strcmp( $firstThursday, $today ) === 0 && ! get_transient( \'alreadySentEmails\' ) )
{
send_emails();
set_transient( \'alreadySentEmails\', 60 * 60 * 24 );
}
请注意,您应该使用WordPress\'
date_i18n()
和
current_time() 函数而不是PHP
date()
和
time()
- 哪一个
strtotime()
隐式调用-,以便正确处理时区。
还请注意relative formats 是PHP 5.3的新手,因此请确保您的服务器是最新的。