WordPress实现用户注册审核功能

WordPress默认直接注册登录了,不需要任何验证,如果被批量注册就麻烦了,所以添加一个审核功能比较好。

corepress主题支持设置用户注册审核。注册用户默认需要手动审核,审核以后才能登陆,开启审核,可以有效防止用户批量注册。

这儿讲解一下如何通过WordPress过滤器来说实现相关功能。

用户列表界面设置

WordPress用户页面,点击顶部用户类型,通过URL中status参数来过滤,那么添加一个参数为:unapproved 网址参数为:网址/wp-admin/users.php?status=unapproved

添加界面过滤器

add_filter('views_users', 'corepress_views_users');

function corepress_views_users($views)
{
    global $wpdb;
    if (!current_user_can('edit_users')) return $views;

    $current = '';
    if (isset($_REQUEST['status']) && $_REQUEST['status'] == 'unapproved') $current = 'class="current"';

    $meta_key = 'corepress_approve';
    $users = get_users(array(
        'meta_query' => array(
            array(
                'key' => $meta_key,
                'value' => '1',
                'compare' => '='
            )
        )
    ));
    $count = count($users);
    $views['unapproved'] = '<a href="' . admin_url('users.php') . '?status=unapproved" ' . $current . '>' . '待审核' . ' <span class="count">(' . $count . ')</span></a>';
    return $views;
}

这个时候,已经能显示待审核的用户列表了

实现用户查询

通过user_meta,来查询,并返回给前台

add_filter('pre_get_users', 'filter_users');

function corepress_filter_users($query)
{
    global $pagenow;
    if (is_admin() && 'users.php' == $pagenow) {
        global $wpdb;
        if (!isset($_GET['orderby'])) {
            $query->set('orderby', 'registered');
            $query->set('order', 'desc');
        }
        if (isset($_REQUEST['status']) && $_REQUEST['status'] == 'unapproved') {
            $query->set('meta_query', array(
                array(
                    'key' => 'corepress_approve',
                    'value' => '1',
                    'compare' => '='
                )
            ));
        }
    }
    return $query;
}

 实现批量修改用户审核状态

添加批量操作表项

add_filter('bulk_actions-users', 'corepress_add_userlist_approve');
function corepress_add_userlist_approve($actions)
{
    if (current_user_can('edit_users')) {
        $actions['approve'] = '审核用户';
        $actions['disapprove'] = '设置为未审核';
    }
    return $actions;
}

接管批量操作

add_filter('handle_bulk_actions-users', 'corepress_handle_users', 10, 3);
function corepress_handle_users($redirect_to, $doaction, $ids)
{
    if (!$ids || !current_user_can('edit_users')) return $redirect_to;
    if ($doaction == 'approve') {
        foreach ($ids as $id) {
            update_user_meta($id, 'corepress_approve', 0);
        }
    } else if ($doaction == 'disapprove') {
        foreach ($ids as $id) {
            update_user_meta($id, 'corepress_approve', 1);
        }
    }
    return $redirect_to;
}

这个时候,一套体系已经完成了,在注册用户的时候,为用户添加额外字段,就能实现审核的功能了。

 

 

 

上一篇 Vue3开发笔记(1)vue-cli 配置
下一篇 使用批处理开启或者关闭Windows远程的功能
目录
applek

applek管理员

个人说明在个人中心里面设置

本月创作热力图

最新评论
吴彦祖
吴彦祖
3月14日
很期待优秀的主题作品qiang
xxx
xxx
3月14日
密码是多少
西风
西风
3月7日
暂时不需要也能跑
Kevin
Kevin
3月6日
请教,小网站,1000ip不到,小主机,2c4g,到底 redis 还是 macached 合适啊
hfloke
hfloke
3月1日
新版本安装更新后,页面有问题哦