日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

WordPress主題純代碼實(shí)現(xiàn)禁止某些用戶賬號(hào)登錄,下面這段代碼主要實(shí)現(xiàn)用戶登錄時(shí)提示用戶該賬號(hào)已被禁用,如此簡單的問題,百度肯定有答案,果不其然,百度一番后找到可用代碼,不過確不能和前端匹配,于是簡單修改下DUX主題的登錄接口,實(shí)現(xiàn)效果如下。


5f98fd6fb6ca0.jpg


全部功能分為兩部分,第一部分為WordPress禁止用戶登錄,下面看看實(shí)現(xiàn)代碼,為了大家使用方便,這里直接放插件代碼,當(dāng)然,如果你想放在主題functions.php文件中也是沒有任何問題的。

禁止用戶登錄

<?php
//禁止某用戶登錄
 
//在資料頁面添加選項(xiàng)
function dmd_denied_admin_init(){ 
    // 編輯用戶資料
    add_action( 'edit_user_profile', 'dmd_denied_edit_user_profile' );
    add_action( 'edit_user_profile_update', 'dmd_denied_edit_user_profile_update' ); 
}
add_action('admin_init', 'dmd_denied_admin_init' );
 
//在個(gè)人資料頁面添加一個(gè)復(fù)選框
function dmd_denied_edit_user_profile() {
    if ( !current_user_can( 'edit_users' ) ) {
        return;
    } 
    global $user_id; 
    // 用戶不能禁止自己
    $current_user = wp_get_current_user();
    $current_user_id = $current_user->ID;
    if ( $current_user_id == $user_id ) {
        return;
    }
    ?>
<h3>權(quán)限設(shè)置</h3>
    <table class="form-table">
    <tr>
        <th scope="row">禁止用戶登錄</th>
        <td><label for="dmd_denied_ban"><input name="dmd_denied_ban" type="checkbox" id="dmd_denied_ban" 
        <?php if (dmd_denied_is_user_banned( $user_id )){echo 'checked="checked"';} ?> /> 禁止該用戶登陸!</label></td>
    </tr>
    </table>
    <?php}
 
//添加一個(gè)函數(shù)來將這個(gè)選項(xiàng)的值保存到數(shù)據(jù)庫中
function dmd_denied_edit_user_profile_update() { 
    if ( !current_user_can( 'edit_users' ) ) {
        return;
    } 
    global $user_id; 
    // 用戶不能禁止自己
    $current_user    = wp_get_current_user();
    $current_user_id = $current_user->ID;
    if ( $current_user_id == $user_id ) {
        return;
    } 
    // 鎖定
    if( isset( $_POST['dmd_denied_ban'] ) && $_POST['dmd_denied_ban'] = 'on' ) {
        dmd_denied_ban_user( $user_id );
    } else { // 解鎖
        dmd_denied_unban_user( $user_id );
    } 
}
 
//禁止用戶
function dmd_denied_ban_user( $user_id ) { 
    $old_status = dmd_denied_is_user_banned( $user_id ); 
    // 更新狀態(tài)
    if ( !$old_status ) {
        update_user_option( $user_id, 'dmd_denied_info', true, false );
    }
}
 
//解禁用戶
function dmd_denied_unban_user( $user_id ) { 
    $old_status = dmd_denied_is_user_banned( $user_id ); 
    // 更新狀態(tài)
    if ( $old_status ) {
        update_user_option( $user_id, 'dmd_denied_info', false, false );
    }
}
 
//判斷用戶是否被禁止
function dmd_denied_is_user_banned( $user_id ) {
    return get_user_option( 'dmd_denied_info', $user_id, false );
}
 
//阻止已禁止的用戶登錄
function dmd_denied_authenticate_user( $user ) { 
    if ( is_wp_error( $user ) ) {
        return $user;
    } 
    // 如果用戶被禁止,則返回錯(cuò)誤提示
    $banned = get_user_option( 'dmd_denied_info', $user->ID, false );
    if ( $banned ) {
        return new WP_Error( 'dmd_denied_info', __('該用戶被禁止登錄!如有疑問請(qǐng)聯(lián)系站長!', 'denied') );
    } 
    return $user;
}
//將該函數(shù)掛載到 wp_authenticate_user 鉤子
add_filter( 'wp_authenticate_user', 'dmd_denied_authenticate_user', 1 );

簡單解釋下wp_authenticate_user鉤子,它會(huì)在用戶登錄時(shí)篩選是否允許用戶進(jìn)行身份驗(yàn)證,禁止也就無法登錄了。

上面的代碼是完整的插件代碼,使用它你需要在你的插件目錄中新建一個(gè)文件夾,然后將上面的代碼保存為dmd_denied.php文件放在新建的文件夾里即可,當(dāng)然還需要去WordPress后臺(tái)插件頁面啟用插件。

如果你不想使用插件,那么只需要將上面插件頭部結(jié)束后面的所有代碼全部復(fù)制到你的主題functions.php文件最后即可。

上面代碼生效后,隨便打開一個(gè)用戶的資料就可以看到一個(gè)禁止用戶登錄的選擇框,勾選即禁止登錄。

修改DUX主題登陸接口

dux主題的登錄接口文件在主題目錄下的action文件夾中的log.php文件中,將第56行到第61行內(nèi)容(可能行號(hào)不準(zhǔn)確,仔細(xì)對(duì)比)

$user_verify = wp_signon( $login_data, false );   
if ( is_wp_error($user_verify) ){
    print_r(json_encode(array('error'=>1, 'msg'=>'用戶名/郵箱或密碼錯(cuò)誤')));  
    exit();  
}

改為

$user_verify = wp_signon( $login_data, false );   
if ( is_wp_error($user_verify) ){
    $errormsg=$user_verify->get_error_messages( 'dmd_denied_info' )[0];
    if($errormsg){
        print_r(json_encode(array('error'=>1, 'msg'=>$errormsg)));
         exit(); 
    }
    print_r(json_encode(array('error'=>1, 'msg'=>'用戶名/郵箱或密碼錯(cuò)誤')));  
    exit();  
}

到此DUX主題禁止指定用戶登錄的功能就做好了,其它主題也是一樣的邏輯,如果你的主題是使用的WordPress自帶的登錄頁,就不必做第二步修改主題登錄接口了,WordPress會(huì)自動(dòng)解析wp_error錯(cuò)誤信息提示用戶!



分享到:
標(biāo)簽:WordPress主題 純代碼 禁止賬號(hào)登錄
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定