发布预定帖子时从WP站点发送短信

时间:2017-04-23 23:47:32

标签: php wordpress scheduling

我想使用WordPress的内置后期调度功能向人们发送有关网站内容的短信提醒。目的是在会员网站中创建一个功能,人们可以在其中注册任何提醒,我可以安排这些提醒,并通过短信和电子邮件自动发送。我想用PHP邮件做到这一点。

我编写了一个使用transition_post_status钩子的函数,如下所示:

function visa_reminder( $old_status, $new_status, $post ) {
  if ( ($old_status != 'publish' && $new_status == 'publish')
&& 'reminder' == $post->post_type
) {

/* 
* Note: Reminder is the CPT I have created for this purpose
* In the custom post, you can input mobile number, carrier domain, etc.
*/ 

        $number = get_field('mobile_number');
        $carrier = get_field('carrier_domain');
        $to = $number .'@'. $carrier;
        $from = 'me@email.com';
        $subject = 'Your visa reminder';
        $message = get_field('text'); 
        $headers = "From: $from\n";

        mail($to, $subject, $message, $headers);

        echo $message;

  }
}
add_action( 'transition_post_status', 'visa_reminder', 10, 3 );

我在single-reminder.php中调用函数visa_reminder($old_status, $new_status, $post);

然后我创建一个提醒帖子,并在将来安排它几分钟,只是为了测试。

现在发生的事情是,只要我按下“计划”按钮,就会发送短信。当预定的帖子实际发布时,没有什么进一步发生,除非我查看实际的帖子(不是看到帖子很重要 - 没有人真正想看到它,它只是应该发送短信)我得到PHP错误说我在函数中调用的变量没有定义。我认为这些将由函数传递,所以我真的不明白如何解决这个问题。

在过去的几天里,我尝试过这个函数的几种排列,并且还尝试了钩子future_to_publish而没有更好的运气。我觉得我很亲密,但我有两个主要问题:

  1. 我不明白我应该如何定义传递给页面上的函数的变量。如果我传递$old_status, $new_status, $post不正确,那么我应该在single-reminder.php中添加什么功能?

  2. 为什么我按计划时会发送短信?我猜这是因为帖子正在从“草稿”过渡到“日程安排”。但是,当它从“计划”转换为“发布”时,为什么它不会再次发送消息?

  3. 感谢您提供的任何帮助。

0 个答案:

没有答案