2012-03-16 3 views
0

Для сайта wordpress я должен реализовать напоминание, которое будет отправлено через 30 дней после создания сообщения в wordpress.Напоминание автору сообщения Wordpress ровно 1 месяц

Например:

Автор создает пост, через 30 дней после создания этого поста автор получит почту на электронный адрес, который-он/она заполняется в профиль администратора панели.

Письмо должно содержать URL-адрес оригинального сообщения.

Есть ли доступные плагины, которые могли бы мне помочь, или я должен написать пользовательскую функцию?

Заранее спасибо.

+0

Вы должны написать пользовательский код, вероятно. Вам нужно создать php-скрипт, который будет SELECT сообщений через 30 дней(). Вероятно, весь день для этого, что означает сообщения 30 дней назад с 00:00:00 до 23:59:59. Затем для каждого найденного сообщения получите электронное письмо и заголовок сообщения и используйте mail(), чтобы отправить им напоминание. Делайте это каждый день с ежедневной настройкой cron. – Panagiotis

ответ

2

Проблема, с которой вы столкнулись, заключается в том, что PHP работает, когда пользователь делает запрос. Итак, если никто не посещает сайт в нужный день или в нужное время, код, который вы хотите, может не работать. И даже если это так, вы хотите замедлить случайный запрос пользователей для этой функции.

Лучше всего, если вы заглянете в запланированную задачу (Windows) или Cron Job (linux). Эти утилиты могут использоваться для запуска PHP-скриптов в определенное время или с определенными интервалами (каждый час, каждый день в полночь и т. Д.). Затем вы создаете скрипт PHP, который выполняет работу по поиску конкретных сообщений и отправке писем.

Если ваш хостинг-провайдер не разрешает доступ к утилите диспетчеризации. Вы можете настроить свой собственный компьютер или другой компьютер с запланированной задачей для вызова определенного файла PHP, который выполняет эту работу.

0

Для временного решения я сделал следующее:

Я скачал плагин «коррумпированный менеджер cronjob»

Этот плагин позволяет вам запускать пользовательские PHP в определенный интервал времени.

Мой заказ PHP выглядит следующим образом:

<?php 

    $query = "SELECT * FROM wp_posts 
     WHERE post_type = 'catalogus' 
     AND post_date BETWEEN '" . date('Y-m-d', strtotime('-30 days')) . "' 
     AND '" . date('Y-m-d', strtotime('-29 days')) . "'"; 

    $allposts = $wpdb->get_results($query); 

    if($allposts){ 
    foreach ($allposts as $post) { 
     // get post name for url 
     echo "http://xxxxxx.xxx/product/".$post->post_name; 
     // get author email to send mail to. 


     $to = get_the_author_meta('email',$post->post_author); 
     $subject = "XXXXXXXXXXX"; 
     $headers = "From: XXXXX <[email protected]>"; 
     $message = "Dummy message"; 
     wp_mail($to, $subject, $message, $headers, $attachments); 
    } 
    } 
    else{ 
    echo "No posts"; 
    } 
?> 

Это еще не идеальное решение, потому что, как Крис уже упоминалось выше, это cronjob будет работать только тогда, когда посетитель делает запрос, мой следующий шаг должен написать реальное задание cron или запланированное задание, которое выполнит приведенный выше код.