#php #wordpress #email #plugins
#php #wordpress #Адрес электронной почты #Плагины
Вопрос:
Итак, я создаю свой первый плагин для WordPress. Это простой плагин, который запрашивает базу данных SQL, получает электронные письма читателей блога и отправляет им электронное письмо всякий раз, когда сообщение обновляется или публикуется.
Идея состоит в том, чтобы иметь электронное письмо, которое сообщает читателю, был ли пост обновлен с его более старой версии или опубликован новый пост. Также предполагается, что он предоставляет ссылку на сообщение для быстрого чтения.
Я зашел так далеко:
add_action( 'publish_post', 'email_function' );
function email_function( $arg ) {
$link = mysqli_connect("*********", "********", "********", "***********");
if (mysqli_connect_error()) {
die ("There was an error connecting to the database");
}
$query = "SELECT `******` FROM `*******`";
$msg = "There has been a new blog post at The White Road!";
if ($result = mysqli_query($link, $query)){
while ($row = mysqli_fetch_array($result)){
mail($row['email'],"New Post!",$msg);
}}else {
//for testing
echo "break";
}
}
Теперь проблема в том, что в этой ситуации я хочу, чтобы эта функция выполнялась автоматически, но для того, чтобы иметь возможность сделать это, мне нужно будет найти несколько неизвестных программно. В частности, сообщение, которое обновляется, если сообщение обновляется или если оно новое, автор указанного сообщения и ссылка на его страницу.
Я просмотрел WordPress Codex, и все низкоуровневые функции (которые было бы легко понять новичку) требуют либо идентификатора записи, либо идентификатора автора, чтобы это произошло. Это, конечно, не соответствует дизайну.
Любая помощь о том, как найти и использовать эти вещи, была бы очень признательна. 🙂
Комментарии:
1. Я не знаю, плохой ли это вопрос или просто плохо сформулирован, но найти что-то «неизвестное» во всем звучит практически невозможно! Я полагаю, вы имеете в виду, что пытаетесь найти идентификаторы записей на основе каких-то других критериев? Ваши вопросы не очень понятны
Ответ №1:
В WordPress API есть post_updated
хук, к которому вы могли бы присоединить эту функцию с помощью add_action
.
https://codex.wordpress.org/Plugin_API/Action_Reference/post_updated
Вы могли бы сравнить before
и after
, и если значения определенного поля отличаются, это вызвало бы обновление. Я полагаю, что проще всего было бы проверить datetime
, в качестве альтернативы, вы могли бы попросить его проверить заголовок, если незначительные изменения в правописании / грамматике не заслуживают отправки по электронной почте.