Кто-нибудь здесь знает или может дать мне руководство о том, как написать администратору WordPress через 36 часов после регистрации нового пользователя на их веб-сайте?
Вот что я пытаюсь сделать:
- Найти всех пользователей в базе данных
- Проверьте, есть ли у пользователей определенная роль / роли
- Проверьте, если некоторые из этих пользователей уже зарегистрированы в течение 36 часов
- Используйте WP_cron, чтобы установить их (я буду использовать каждый час, чтобы быть уверенным, что поймаю всех этих пользователей)
Вот код, который я делаю до сих пор, но я всегда теряюсь, когда хочу, чтобы пользователи зарегистрировались в течение 36 часов.
/**
* SEND A NOTIFICATION AFTER 36 HOURS
*/
function myprefix_custom_cron_schedule( $schedules ) {
$schedules['every_hour'] = array(
'interval' => 3600, // Every hour
'display' => __( 'Every hour' ),
);
return $schedules;
}
add_filter( 'cron_schedules', 'myprefix_custom_cron_schedule' );
//Schedule an action if it's not already scheduled
if ( ! wp_next_scheduled( 'qd_cron_hook' ) ) {
wp_schedule_event( time(), 'every_hour', 'qd_cron_hook' );
}
///Hook into that action that'll fire every hour
add_action( 'qd_cron_hook', 'qd_cron_function' );
//create function, that runs on cron
function qd_cron_function() {
$args = array(
'role' => 'business-pending',
'fields' => array( 'ID', 'user_registered' ),
);
$users = get_users( $args );
foreach($users as $user){
$user_regDate = $user->user_registered;
$dateNow = gmdate("Y-m-d H:i:s");
Здесь я заблудился. Я предполагаю, что теперь я должен вычесть время из значения user_registered и затем создать условие, чтобы отображать только тех пользователей, которые зарегистрировались за 36 часов.
$emailto = get_option('admin_email');
$subject = 'Please activate this user';
$message = 'This user has not been activated.';
wp_mail( $emailto, $subject, $message );
}
Любая помощь будет оценена. Большое спасибо!