如何让WordPress在首次登录后30天删除订户用户

时间:2017-10-17 20:11:15

标签: php wordpress

我目前正在使用以下代码在30天后删除订阅者角色中的用户,但会在注册后30天删除用户。相反,我希望它在首次登录后30天自动删除它们。我在functions.php文件中使用此代码。

Php代码:

function auto_delete_users() {
    global $wpdb;
    $userlevel = 0; // 0 = subscriber
    $deleteafter = 30; // delete User after X days
    $query = $wpdb->prepare("SELECT $wpdb->users.ID FROM $wpdb->users LEFT JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id WHERE $wpdb->usermeta.meta_key = %s AND $wpdb->usermeta.meta_value = %d AND DATEDIFF(CURDATE(), $wpdb->users.user_registered) > %d", $wpdb->prefix.'user_level',$userlevel,$deleteafter);

    if($oldUsers = $wpdb->get_results($query, ARRAY_N)){
        foreach ($oldUsers as $user_id) {
            wp_delete_user($user_id[0]);
        }
    }
}
add_action('daily_clean_database', 'auto_delete_users');
wp_schedule_event(time(), 'daily', 'daily_clean_database');

1 个答案:

答案 0 :(得分:0)

您可以创建一个跟踪用户首次登录帐户创建脚本的功能。此函数将在wp_usermeta表中存储值0。

然后在登录功能中你可以检查这个值,看它是否为0, 如果是,则可以将其更改为1并将当前日期存储为wp_usermeta表中的另一个值。

如果您将帐户创建脚本和登录脚本附加到原始帖子,我可以为您提供帮助。