如何根据注册日期更改用户角色?

时间:2015-11-03 作者:sc2015

2015年10月1日,我导入了4000名用户作为“订阅者”,现在需要将其所有角色更改为一个名为“待批准”的自定义角色。因此,我需要将这些订阅者的角色更改为我的自定义角色“待批准”,前提是他们在10月1日注册。我正在使用此插件筛选他们在仪表板中注册的日期-https://wordpress.org/plugins/recently-registered/ 还有这个插件https://wordpress.org/plugins/user-role-editor/ 对于名为“待批准”的自定义角色。手动更改他们在仪表板中的角色需要时间。我用下面的代码开始了我的学习,但我是PHP的新手。如有任何帮助,将不胜感激:

// Access to get_users
$blogusers = get_users( \'subscriber\' );

foreach ($blogusers as $user) {

$date = \'2015-10-01\';
$registered = ($user_info->user_registered);

if($date == $registered) {
    $u = new WP_User( $user->ID );

    // Remove role
    $u->remove_role( \'subscriber\' );

    // Add role
    $u->add_role( \'to_be_approved\' );
}

}
我做得对吗?

谢谢

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

最后,你的日期比较有点偏离-user_registered 将是MySQL datetime,因此字符串比较永远不会计算为true。相反,请仅将其转换为日期:

$registered = mysql2date( \'Y-m-d\', $user->user_registered ); 
现在我们在讨论:

if ( \'2015-10-01\' === $registered ) {
    // chocks away
}
Update: 下面是一个完整的片段,它的内存占用也应该更少:

$users = get_users(
    array(
        \'fields\' => array( \'ID\', \'user_registered\' ),
        \'role\'   => \'subscriber\',
    )
);

foreach ( $users as $user ) {
    if ( \'2015-10-01\' === mysql2date( \'Y-m-d\', $user->user_registered ) ) {
        $u = new WP_User( $user->ID );

        // Remove role
        $u->remove_role( \'subscriber\' );

        // Add role
        $u->add_role( \'to_be_approved\' );
    }
}
代码没有经过测试,您应该假设它将被破坏,所以备份,备份,备份。确保你有debugging enabled

相关推荐