Intereting Posts
Как использовать фильтр 'http_request_host_is_external' Как создать архив автора только для определенной роли пользователя и показать связанный CPT показать описание термина вместо списков терминов пользовательской таксономии если инструкция для показанных изображений Уменьшите количество SQL-запросов внутри цикла WP_Query для извлечения данных автора Удаление дубликатов вложений Как скачать WordPress 4.2.0 Как получить ссылку профиля пользователя Buddypress и определенное поле профиля пользователя для текущего автора сообщения? TinyMCE – Показать дополнительные параметры (2-я строка) По умолчанию Font-Family выглядит не так, как должно быть WP_Query и разбиение на страницы СНОВА? Проблема при подключении к отдельному файлу в цикле foreach Добавление пользовательских таксономий только к выбранным пользовательским типам Получать пользовательские значения полей в боковой панели / виджетах? Как установить родительскую СТРАНИЦУ на POST – отношения между почтой и страницей

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

Я настраиваю электронные письма с транзакциями на своем сайте, и я хотел бы отправить их через 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 }