Nếu tôi phải làm điều này, tôi sẽ sử dụng cookie của riêng mình để xác định đăng nhập và chỉ tải WordPress để kiểm tra khi cần thiết.
Cookie wordpress_logged_in_ {some-hash} có thể được sử dụng để xác định người dùng và WordPress sử dụng nó để xác định tương tự. Bạn không thể dễ dàng thực hiện lại điều đó, nhưng bạn có thể sử dụng nó mà không cần tải WordPress trên nhiều yêu cầu.
Ví dụ: đây là hàm băm cookie của tôi (hoàn toàn tạo thành dữ liệu, nhưng thực tế):
key: wordpress_logged_in_1234567890abcdef1234567890abcdef
value: admin|1234567890|abcdef1234567890abcdef1234567890
Cách WordPress biết cookie đó hợp lệ như thế nào là không liên quan, tất cả những gì bạn cần biết là liệu nó có hợp lệ một lần hay không, sau đó bạn ký nó với một bí mật.
Vì vậy, lần đầu tiên, người dùng chưa được chứng minh. Bạn tải wp-load.php và WP xác thực cookie và đăng nhập người dùng. Bây giờ bạn làm bất cứ điều gì bạn làm để chứng minh với bản thân rằng người dùng đã đăng nhập, sau đó bạn đặt cookie của riêng mình. Khóa có thể là bất cứ thứ gì tùy chỉnh với bạn, giá trị bạn tạo thành thông báo tiêu hóa với khóa bí mật sử dụng hàm hash_hmac.
$key = ... // the key from the WP cookie
$value = ... // the value from the WP cookie
$hash = hash_hmac ( 'md5' , $key.$value , 'some secret key' );
Bạn sẽ nhận lại được sự vô nghĩa, mà bạn gửi lại cho họ bằng setcookie (). Theo yêu cầu trong tương lai, họ sẽ gửi lại cookie này cho bạn. Bạn có thể kiểm tra trước và xác thực nó bằng cách sử dụng cùng hàm băm và khóa bí mật.
Chỉ bạn mới có thể tạo băm vì chỉ có bạn mới biết khóa bí mật. Vì vậy, nếu họ gửi lại một hàm băm hợp lệ cũng khớp với những gì họ gửi cho cookie WP của họ, thì bạn biết rằng họ đã được xác thực với WP, thông qua mã của bạn, trước đó và bạn có thể lấy tên người dùng ngay từ giá trị đó (đầu tiên là một phần của cookie, rõ ràng). Sau đó, bạn không phải tải WP.
Khóa bí mật, BTW, phải dài và ngẫu nhiên . Không phải là một mật khẩu ngắn. Không phải là một từ trong từ điển. Chỉ là vô nghĩa lớn vô nghĩa. Dòng tiếng ồn, và rất nhiều nó. Khóa ví dụ:
'GHY5hFNqq4Ntdu=3:SUp8#/+_W!- @@^@xslN*L|N+Vn;(1xo8jNyp,au$v9Ki5*'