Я хотел бы использовать встроенную в WordPress функцию пост-планирования для отправки SMS-напоминаний людям о материалах с веб-сайта. Цель состоит в том, чтобы создать функцию на сайте, где люди могут подписаться на напоминания о чем угодно, и я могу запланировать эти напоминания и автоматически отправлять их по SMS и электронной почте. Я хочу сделать это с помощью почты 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 = '[email protected]';
$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_reminder($old_status, $new_status, $post);
в single-remder.php.
Затем я создаю сообщение с напоминанием и планирую его на несколько минут в будущем, просто для тестирования.
Сейчас происходит то, что SMS отправляется, как только я нажимаю кнопку «Расписание». И когда запланированная публикация действительно публикуется, больше ничего не происходит, кроме как когда я просматриваю реальную запись (не то, чтобы видеть сообщение важно — никто не должен его видеть, он просто должен отправить SMS), я получаю PHP ошибки, говорящие о том, что переменные, которые я вызвал в функции, не определены. Я думал, что они будут переданы функцией, поэтому я не совсем понимаю, как это исправить.
Я пробовал несколько перестановок этой функции за последние пару дней, а также экспериментировал с крючком future_to_publish
без удачи Я чувствую, что я рядом, но у меня есть два основных вопроса:
Я не понимаю, как именно я должен определить переменные, которые передаются функции на странице. Если это неправильно для меня, чтобы пройти $old_status, $new_status, $post
, то, что я должен положить в функцию в single-Remder.php?
Почему SMS-сообщение отправляется, когда я нажимаю «Расписание»? Я думаю, это потому, что пост переходит от «черновика» к «расписанию». Но тогда почему он не отправляет сообщение снова при переходе от «расписания» к «публикации»?
Спасибо за любую помощь, которую вы можете оказать.
Задача ещё не решена.
Других решений пока нет …