Bạn có thể đặt đăng nhập wordpress để sử dụng bảng tùy chỉnh bằng cách chỉnh sửa tệp config.php và thêm hai dòng sau:
define('CUSTOM_USER_TABLE','new_user_table'); //login, pass, email etc
define('CUSTOM_USER_META_TABLE', 'new_usermeta_table'); //optional bio, don't have to include this line
Trong đó new_user_table là bảng trên trang web của bạn và new_usermeta_table là bảng tiểu sử trên trang web của bạn (nếu bạn muốn có)
Bảng tùy chỉnh cần có cấu trúc giống như bảng wordpress thông thường. Vì vậy, để điều này hoạt động với bảng của trang web hiện tại của bạn, bạn sẽ phải thêm một số trường và đảm bảo mật khẩu được băm theo cùng một cách.
Đây là cách cấu trúc bảng người dùng
Đây là cách cấu trúc bảng meta người dùng
Để băm mật khẩu chính xác khi đăng ký, hãy bao gồm tệp wp-include / pluggable.php và sử dụng hàm
<?php $hash = wp_hash_password( $password ) ?>
Đối với các mật khẩu hiện có không được băm chính xác, bạn sẽ phải thiết lập đặt lại mật khẩu email.
Hoặc. nếu bạn muốn giữ lại hàm băm mật khẩu hiện tại của mình (không được khuyến nghị vì lý do bảo mật nhưng có thể thực hiện được), bạn có thể thay đổi hàm băm của wordpress. Trong wp-include / pluggable.php thay đổi:
if ( !function_exists('wp_hash_password') ){
function wp_hash_password($password) {
//apply your own hashing structure here
return $password;
}
}
Và thay đổi:
if ( !function_exists('wp_check_password') ){
function wp_check_password($password, $hash, $user_id = '') {
//check for your hash match
return apply_filters('check_password', $check, $password, $hash, $user_id);
}
}
Để biết chi tiết về wp_check_password, hãy Truy cập vào đây
Ngoài ra
Bạn có thể bỏ qua việc lộn xộn với bảng người dùng tùy chỉnh của mình và áp dụng đăng nhập wordpress cho phần còn lại của trang web của bạn. Để thực hiện việc này, chỉ cần sử dụng mã sau:
<?php
include 'wp-config.php';
if ( is_user_logged_in() ) {
echo 'Welcome, registered user!';
} else {
header( 'Location: http://google.com' ) ;
};
?>
Đảm bảo rằng 'wp-config.php' là đường dẫn liên quan đầy đủ đến tệp, sau đó đặt mã này trong mọi trang trên trang web không phải wordpress của bạn. thay thế echo bằng bất kỳ nội dung nào sẽ được hiển thị cho người dùng đã đăng nhập và thay thế tiêu đề bằng bất kỳ nội dung nào sẽ được hiển thị cho khách. Nếu nội dung là html đơn giản, bạn có thể làm như sau:
<?php
include 'wp-config.php';
if ( is_user_logged_in() ) {
?>
<html>
<head></head>
<body><p>Welcome Registered user</p></body>
</html>
<?php
} else {
?>
<html>
<head></head>
<body><p>Please log in</p></body>
</html>
<?php
};
?>