Intereting Posts
Показать все категории в виде простого текста Поле Featured Image не отображается в поле Custom post Сценарии Dequeue в IE7 только с помощью functions.php Использование данных cookie для цикла WP_Query Импорт данных из базы данных, отличной от WordPress, в WP Неопределенное смещение & Неопределенное свойство | Не удалось правильно настроить мои колпачки Как изменить язык по умолчанию на WordPress, а не на панели управления Фильтр по сроку не работает – Пользовательский тип сообщения Как добавить пробел после слова, используя php Создание нового шаблона страницы Как добавить меню в тему из файла function.php Почему PHP Cookie через плагин устанавливается только при входе в систему как Admin, а не обычные пользователи? и другие вопросы Как использовать функцию реагирующих изображений из WP 4.4 в ваших темах Показать все сообщения / страницы в нескольких selectbox Сбрасывает ли данные сообщения, необходимые с помощью пользовательских команд WP_CLI?

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

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

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

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 }