Php 发布计划发布时从WP站点发送SMS

Php 发布计划发布时从WP站点发送SMS,php,wordpress,scheduling,Php,Wordpress,Scheduling,我想使用WordPress内置的post scheduling功能向人们发送关于网站内容的短信提醒。其目的是在会员网站中创建一个功能,人们可以注册任何提醒,我可以安排这些提醒,并让他们通过短信和电子邮件自动发送。我想用PHP邮件来实现这一点 我编写了一个使用transition\u post\u statushook的函数,如下所示: function visa_reminder( $old_status, $new_status, $post ) { if ( ($old_status !

我想使用WordPress内置的post scheduling功能向人们发送关于网站内容的短信提醒。其目的是在会员网站中创建一个功能,人们可以注册任何提醒,我可以安排这些提醒,并让他们通过短信和电子邮件自动发送。我想用PHP邮件来实现这一点

我编写了一个使用
transition\u post\u status
hook的函数,如下所示:

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 );
我正在调用函数
visa\u提醒($old\u status,$new\u status,$post)

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

现在发生的事情是,我一按日程表按钮,短信就被发送出去了。当计划发布的帖子实际发布时,除了查看实际的帖子(并不是说查看帖子很重要——没有人真的想看到它,它只是想发送短信)之外,没有其他事情发生。我收到PHP错误,说我在函数中调用的变量没有定义。我以为这些会被函数传递,所以我真的不知道如何修复它

在过去的几天里,我尝试了这个函数的几种排列方式,还尝试了hook
future\u to\u publish
,但运气并不好。我觉得我很接近,但我有两个主要问题:

  • 我不太明白应该如何定义传递给页面上函数的变量。如果传递
    $old\u status、$new\u status、$post
    对我来说是不正确的,那么我应该在single-rementer.php中的函数中添加什么

  • 为什么当我按计划发送短信?我猜这是因为这篇文章正在从“草稿”过渡到“时间表”。但是,当它从“计划”转换到“发布”时,为什么不再次发送消息呢


  • 感谢您可能提供的任何帮助。

    旁注:如果您需要可靠性,请不要使用任何运营商的电子邮件发送到sms网关OK,请注意。你有没有更好的建议来说明我该怎么做?我可以使用专业的服务,但我真的很想尝试自己建造这个。我应该指出,短信不需要精确到每分钟。如果它在正确的日子到达,那就足够了。