Php 延迟WordPress中的循环
我已经编写了以下函数,当发布帖子时,它将向每个用户发送电子邮件。它工作得很好,但我遇到的问题是,发布帖子可能需要一点时间,因为它需要运行while循环的次数。目前有110名成员 现在我的问题是,有没有一种简单的方法来延迟这个过程,这样帖子就可以发布了,然后邮件发送功能就可以作为一项任务在后台处理了Php 延迟WordPress中的循环,php,wordpress,email,Php,Wordpress,Email,我已经编写了以下函数,当发布帖子时,它将向每个用户发送电子邮件。它工作得很好,但我遇到的问题是,发布帖子可能需要一点时间,因为它需要运行while循环的次数。目前有110名成员 现在我的问题是,有没有一种简单的方法来延迟这个过程,这样帖子就可以发布了,然后邮件发送功能就可以作为一项任务在后台处理了 function send_email_notifications() { $args = array( 'post_type' => 'members',
function send_email_notifications() {
$args = array(
'post_type' => 'members',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'post_parent' => 0,
'post_status' => array('pending', 'draft', 'publish'),
);
$emailSearch = new WP_Query($args);
if(isset($_REQUEST['send_email_notification'])) {
if($emailSearch->have_posts()) {
while($emailSearch->have_posts()) {
$emailSearch->the_post();
wp_mail('test@test.com', 'Test', 'Test');
}
}
}
}
add_action('publish_notifications', 'send_email_notifications', 10, 2);
您可能会发现WordPress Cron很有用。在
publish\u notifications()
函数中,您可以拥有:
$args['subject'] = //something
$args['message'] = //something else
$args['to'] = //an email address
wp_schedule_single_event( time() + 3600, 'email_about_post', $args);
然后在其他地方,你可以有类似的东西:
function email_about_post_function($args) {
wp_mail($args['to'], $args['subject'], $args['message']);
}
add_action( 'email_about_post','email_about_post_function' );
警告-我没有测试此特定代码。请在上阅读更多信息,当然可以。“作业调度器”是你想要的。谢谢你的指导,詹姆斯。进一步研究了wp_schedule_single_event函数,我认为这正是我想要的。