Intereting Posts
Как отобразить категорию из определенного типа post-type Исправлены настраиваемые поля в зависимости от типа публикации / категории Почему я получаю уведомления по электронной почте о комментариях, которые WordPress уже определил, являются спамом? Создание заголовка видео в WordPress только на главной странице Как отобразить имя сайта на странице WordPress или отправить сообщение Плагин расширенных пользовательских полей: введите URL-адрес файла в родительский Два разных домена для двух разных языков Как получить результат comments_number () как строку, а не распечатывать ее? пользовательский html при изменении страницы в браузере WordPress insert NOW () в столбце TIMESTAMP возвращает все нули Могу ли я установить новый сайт WordPress в подкаталог существующего сайта WordPress? Возможно ли сделать WordPress PHP быстрее с помощью кеширования или компиляции? Как настроить found_posts так, чтобы он учитывал смещение и разбиение на страницы Интеграция Firebase с именем WordPress Ошибки редактора Wysiwyg

Получить продолжительность с момента регистрации

Я настраиваю электронные письма с транзакциями на своем сайте, и я хотел бы отправить их через 3 дня после регистрации пользователя, если он не опубликовал. Вот что я имею:

function set_mail_html_content_type() { return 'text/html'; } add_action( 'user_help_signup', 10 ,2 ); function user_help_signup( $ID, //DURATION SINCE SIGN UP ) { if ( //DURATION SINCE SIGN UP > 3days || count_user_posts( $post->post_author ) > 1 ) return; $to = get_user_by( 'id', $post->post_author )->user_email; $subject = 'Need help ?'; $headers = array('Content-Type: text/html'); $message = '<h3>Hi {display_name}! </h3> <p> You signed up 3 days ago on mysite.com and we wanted to know if we could help you to get started '; wp_mail( $to, $subject, $message, 'Content-Type: text/html' ); } 

Однако я не могу найти информацию о том, как получить длительность с момента регистрации. Как я могу это достичь?

Solutions Collecting From Web of "Получить продолжительность с момента регистрации"

WordPress не имеет значения «Duration Since Registration», поэтому вам нужно будет рассчитать его, установив разницу между датой регистрации пользователя и текущей датой. Я предлагаю получить пользователя выше условного:

 function set_mail_html_content_type() { return 'text/html'; } add_action( 'user_help_signup', 10 ,2 ); function user_help_signup( $ID, //DURATION SINCE SIGN UP ) { $curr_user = get_user_by( 'id', $post->post_author ); $reg_date = new DateTime( $curr_user->user_registered ); $curr_date = new DateTime(); $days_reg = intval( $curr_date->diff( $reg_date )->format( "%a" ) ); if ( $days_reg > 3 || count_user_posts( $post->post_author ) > 1 ) { return; } $to = $curr_user->user_email; $subject = 'Need help ?'; $headers = array('Content-Type: text/html'); $message = '<h3>Hi {display_name}! </h3> <p> You signed up 3 days ago on mysite.com and we wanted to know if we could help you to get started '; wp_mail( $to, $subject, $message, 'Content-Type: text/html' ); } 

Мы знаем, что $curr_user->user_registered содержит дату, которую пользователь зарегистрировал, и DateTime() будет получать текущую дату, чтобы мы могли использовать встроенный метод diff() чтобы получить разницу, и поместить его как формат дня в %r%a . Есть хороший ответ StackOverflow на получение разницы в день между двумя датами.

Возьмите объект пользователя за $ID и сделайте некоторую математическую дату (почти, но не совсем тот же ответ, что и у Howdy):

 function user_help_signup( $ID ) { $user = get_user_by('id',$ID); $user_reg = new DateTime($user->data->user_registered); $now = new DateTime(); $diff = $user_reg->diff($now); if ( $diff->days > 3 || count_user_posts( $post->post_author ) > 1 ) { return; } //... your code }