2016-03-30 4 views
4

В WordPress Я создаю плагин, где я отправляю электронное письмо пользователям. Для этого я использую WordPress cron. Поэтому в основном то, что он будет делать, это просто отправлять электронные письма пользователям в каждый час. Так что мой код выглядит следующим образомwordpress schedule event not firing in set time

public function __construct() { 
    add_action('init', array($this, 'send_emails_to_users')); 
    add_action('cliv_recurring_cron_job', array($this, 'send_email')); 
} 

public function send_emails_to_users() { 
    if(!wp_next_scheduled('cliv_recurring_cron_job')) { 
      wp_schedule_event (time(), 'hourly', 'cliv_recurring_cron_job'); 
    } 
} 

public function send_email() { 
    //send email code goes here 
} 

Здесь все выглядит хорошо, но он не посылает электронную почту.

Если я сделать мой код, как этот

public function __construct() { 
    add_action('head', array($this, 'send_email')); 
} 

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

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

Так может кто-нибудь сказать мне, как решить эту проблему?

Любое предложение или помощь будут действительно заметны.

+0

У вас есть сервер cron? wp отправит только сообщение, когда кто-то посещает сайт, и задача должна быть вызвана – David

+0

Я тестирую вашу работу. Для теста вам нужно проверить интервал всего за несколько секунд. – Jevuska

+0

@David Я тестирую его на своей локальной LAMP – NewUser

ответ

0

Прежде всего, 1) Вам нужно настроить кронтаб на сервере, если вы хотите работать динамически 2) если вы хотите вручную WordPress планировщик будет вызывать после того, как страница будет работать

так,

для установки кронтаб ниже полезна ссылка: crontab

+0

Я хочу, чтобы вручную планировщик Wordpress. Для этого я использовал эти функции, но не был уволен вообще. – NewUser

+0

https://codex.wordpress.org/Function_Reference/wp_cron https://codex.wordpress.org/Function_Reference/wp_sched ule_event –

+0

Я просмотрел их все, прежде чем задавать вопрос. Он здесь не работает. – NewUser

0

Если вы хотите запустить хрон в каждом один час, то вам нужно добавить код ниже:

public function __construct() { 
    // Call function for cron 
    add_action('init', array($this, 'send_emails_to_users')); 
} 

public function send_emails_to_users() { 
    if(!wp_next_scheduled('cliv_recurring_cron_job')) { 
     // Add "cliv_recurring_cron_job" action so it fire every hour 
     wp_schedule_event(time(), 'hourly', 'cliv_recurring_cron_job'); 
    } 
} 

add_action('cliv_recurring_cron_job', array($this, 'send_email')); 
public function send_email() { 
    //send email code goes here 
} 

для получения дополнительной информации see link

+0

Да, я сделал свой код так. Но я хочу знать, должен ли загружать wp-cron.php для запуска cron или даже загрузить любую страницу на моем сайте, чтобы запустить пользовательскую функцию? – NewUser

+0

, когда WordPress init автоматически вызывает необходимость загрузки wp-cron.php, проверьте действие init здесь https://codex.wordpress.org/Plugin_API/Action_Reference/init –

+0

, то как запустить функцию, когда пользователь не посещает сайт. Я хочу запустить свою функцию, даже если пользователь не посещает сайт. – NewUser

 Смежные вопросы

  • Нет связанных вопросов^_^