樂于分享
好東西不私藏

WordPress成員注冊顯示注冊日期以及IP

WordPress站點開放注冊后,流量大了訪問量上去后后臺就有一堆的用戶注冊信息,然而WordPress默認的用戶管理界面比較簡單,不方便管理,有時候還會經常遇到機器人惡意注冊等現象,導致網站有一大批僵尸號,一個個找、排除明顯不是辦法。但是有不能不處理,今天就教大家手動添加代碼修改用戶管理界面,直接顯示用戶的注冊IP以及地址。對于一些不法分子直接封禁IP段即可,同時還可以清理長期不活躍的僵尸號。雖然WordPress有著強大的插件拓展,但是插件多了還是會影響WordPress站點的打開速度的,有能力的盡量修改代碼,畢竟WordPress還是挺適合折騰的。

代碼如下:

//這里是相關代碼……
//// ---------------   WordPress成員注冊顯示注冊日期以及IP    -------------     ////

/**
 * add the register record.
 */
function get_client_ip() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
        $ip = getenv("HTTP_CLIENT_IP");
    else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),
"unknown"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
        $ip = getenv("REMOTE_ADDR");
    else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']
&& strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
        $ip = $_SERVER['REMOTE_ADDR'];
    else
        $ip = "unknown";
    return ($ip);
}
// 創建一個新字段存儲用戶注冊時的IP地址
add_action('user_register', 'log_ip');
function log_ip($user_id){
    $ip = get_client_ip();
    update_user_meta($user_id, 'signup_ip', $ip);
}
// 創建新字段存儲用戶登錄時間和登錄IP
add_action( 'wp_login', 'insert_last_login' );
function insert_last_login( $login ) {
    global $user_id;
    $user = get_userdatabylogin( $login );
    update_user_meta( $user->ID, 'last_login', current_time( 'mysql' ) );
    $last_login_ip = get_client_ip();
    update_user_meta( $user->ID, 'last_login_ip', $last_login_ip);
}
// 添加額外的欄目
add_filter('manage_users_columns', 'add_user_additional_column');
function add_user_additional_column($columns) {
    $columns['user_nickname'] = '昵稱';
    $columns['user_url'] = '網站';
    $columns['reg_time'] = '注冊時間';
    $columns['signup_ip'] = '注冊IP';
    $columns['last_login'] = '上次登錄';
    // 打算將注冊IP和注冊時間、登錄IP和登錄時間合并顯示,所以我注銷下面兩行
    /*$columns['signup_ip'] = '注冊IP';*/
    $columns['last_login_ip'] = '登錄IP';
    unset($columns['name']);//移除“姓名”這一欄,如果你需要保留,刪除這行即可
    return $columns;
}
//顯示欄目的內容
add_action('manage_users_custom_column',  'show_user_additional_column_content', 10, 3);
function show_user_additional_column_content($value, $column_name, $user_id) {
    $user = get_userdata( $user_id );
    // 輸出“昵稱”
    if ( 'user_nickname' == $column_name )
        return $user->nickname;
    // 輸出用戶的網站
    if ( 'user_url' == $column_name )
        return ''.$user->user_url.'';
    // 輸出注冊時間和注冊IP
    if('reg_time' == $column_name ){
        return get_date_from_gmt($user->user_registered) ;
    }
// 輸出注冊時間和注冊IP
    if('signup' == $column_name ){
        return get_user_meta( $user->ID, 'signup_ip', true);
    }
    // 輸出最近登錄時間和登錄IP
    if ( 'last_login' == $column_name && $user->last_login ){
        return get_user_meta( $user->ID, 'last_login', ture );
    }

// 輸出最近登錄時間和登錄IP
    if ( 'last_login_ip' == $column_name ){
        return get_user_meta( $user->ID, 'last_login_ip', ture );
    }
    return $value;
}

// 默認按照注冊時間排序
add_filter( "manage_users_sortable_columns", 'cmhello_users_sortable_columns' );
function cmhello_users_sortable_columns($sortable_columns){
    $sortable_columns['reg_time'] = 'reg_time';
    return $sortable_columns;
}
add_action( 'pre_user_query', 'cmhello_users_search_order' );
function cmhello_users_search_order($obj){
    if(!isset($_REQUEST['orderby']) || $_REQUEST['orderby']=='reg_time' ){
        if( !in_array($_REQUEST['order'],array('asc','desc')) ){
            $_REQUEST['order'] = 'desc';
        }
        $obj->query_orderby = "ORDER BY user_registered ".$_REQUEST['order']."";
    }
}

以上代碼僅供預覽,詳情代碼請在文章底部下載即可,代碼部分直接添加到主題目錄下的functions.php文件中即可。修改之前記得備份修改的文件……

修改后效果如圖:

務必要用代碼編譯軟件修改,如notepad++本站都有下載,禁止用電腦自帶的筆記本修改,否則后果如下圖:

 

修改好代碼后,在wordpress后臺–用戶的區域就開始自動記錄用戶的注冊時間和IP,以及上一次登錄的時間和IP了,如有其他問題歡迎文章底部留言。

 






文件名稱:代碼

文件大小:109 K

作者信息:*

更新日期:2017.12.10

點擊下載

本站文章均為手工撰寫未經允許謝絕轉載:夜雨聆風 » WordPress成員注冊顯示注冊日期以及IP
支付寶掃碼打賞 微信打賞

如果文章對您有幫助,歡迎移至上方按鈕打賞……

評論 1

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

  1. #1

    幫我加一個唄,謝謝了。。。

    天朝磊1年前 (2018-11-22)Linux | Chrome 68.0.3440.91回復
×
訂閱圖標按鈕
羽毛球馆地板