WordPress實現用戶注冊審核功能

講解一下如何通過WordPress過濾器來說實現相關功能。

99155d6ebc20d5c9f0aeef80dec28716_MD5

用戶列表界面設置

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;
}

這個時候,一套體系已經完成了,在注冊用戶的時候,爲用戶添加額外字段,就能實現審核的功能了。

原文鏈接:https://www.wexueba.com/100.html,轉載請注明出處。
0