Permalink đăng xuất mà không cần plugin

Tìm hiểu cách thêm liên kết cố định gọn gàng / đăng xuất vào trang web WordPress của bạn mà không cần thêm plugin khác. Trong hướng dẫn này, chúng tôi sẽ thêm quy tắc ghi lại URL để tạo một liên kết cố định đẹp có tên là “/ logout” và chúng tôi sẽ chỉ thêm một vài dòng mã vào tệp functions.php của chủ đề con tùy chỉnh của bạn để đăng xuất khỏi trang web một cách rõ ràng.

Đăng xuất theo cách WordPress

Thông thường, để đăng xuất khỏi WordPress, bạn có thể sử dụng một cái gì đó như sau làm URL:
https://example.org/wp-login.php?action=logout
Không có gì sai với điều này. Nó trông không đặc biệt sạch sẽ. nhưng nó hoạt động và bạn có thể tạo một mục menu với mục này làm URL tùy chỉnh của mục menu.

Tạo Permalink “/ logout” khá

Một cách dễ dàng để tạo điểm cuối / logout cho trang web của bạn là chỉ cần tạo một Trang mới và đặt liên kết cố định của nó thành “đăng xuất”. Sau đó, bạn có thể tạo một shortcode tùy chỉnh, đặt nó vào một khối trên trang “đăng xuất” của bạn và chỉ cần gọi hàm PHP wp_logout () từ bên trong shortcode của bạn. Tôi chưa thử cách tiếp cận này, nhưng tôi nghĩ rằng nó sẽ hoạt động tốt và việc tạo một shortcode tùy chỉnh khá dễ dàng.

Nhưng… chúng ta sẽ sử dụng hướng dẫn này như một cái cớ để tạo một điểm cuối tùy chỉnh với hàm add_rewrite_rule () PHP.

Sẽ rất hữu ích nếu bạn hiểu một chút về những gì xảy ra ở hậu trường khi bạn xem một bài đăng, sản phẩm hoặc một trang WordPress…

Bài đăng hướng dẫn thực tế mà bạn đang đọc này hiện có URL sau…

https://wp-tutorials.tech/refine-wordpress/add-a-logout-permalink-without-a-plugin/

nhưng… đằng sau hậu trường, URL thực tế là một cái gì đó giống như thế này…

https://wp-tutorials.tech/index.php?p=2609

Một hệ thống có tên là viết lại URL sẽ dịch URL bạn đang tìm kiếm (liên kết cố định khá đẹp) sang định dạng thích hợp / thô này để WordPress có thể xử lý nó. Trong trường hợp này, “p = 2609” là viết tắt của “post_id” 2609, với “p” là một “biến truy vấn”. Vì vậy, những gì chúng tôi muốn làm là tạo một quy tắc viết lại để chuyển đổi liên kết cố định URL đẹp…

Liên kết cố định URL đẹp…

https://example.org/logout

URL phụ trợ thô…

https://example.org/index.php?hwlo_action=logout
Sau đó, chúng ta có thể móc hành động template_include để xem liệu biến truy vấn “ hwlo_action ” đã được chỉ định hay chưa và được đặt thành giá trị “ logout ”. Nếu có, thì chúng ta chỉ có thể gọi wp_logout () và để WordPress làm những gì nó cần làm liên quan đến cookie và chuyển hướng.

Hãy viết một số mã

Tạo một tệp mới trong thư mục của chủ đề con tùy chỉnh của bạn có tên là functions-logout-url.php và dán phần sau vào đó.
/**
 * Headwall Logout with Pretty Permalink
 *
 * Register the /logout permalink:
 *  * When /logout is is detected, add 'hwlo_action=logout' to the back-end URL.
 *  * When WordPress is figuring out what template to use, detect if 
 *    hwlo_action=logout is set, then call wp_logout()
 *
 * To use this, add the following to your custom child theme's functions.php
 *
 *    require_once 'functions-logout-url.php';
 *
 * And then go to your site's admin area and flush the rewrite rules.
 *
 *    Settings > Permalinks > Click "Save Changes"
 *
 * You should then be able to logout of your site by going to /logout
 */
// Block direct access.
if (!defined('WPINC')) {
   exit('Do NOT access this file directly.');
}
// Change this if you want something other than /logout as your permalink.
const HWLO_ENDPOINT_LOGOUT = 'logout';
const HWLO_QUERY_VAR = 'hwlo_action';
function hwlo_rewrite_rules() {
   add_rewrite_rule(HWLO_ENDPOINT_LOGOUT, 'index.php?' . HWLO_QUERY_VAR . '=logout', 'top');
}
add_action('init', 'hwlo_rewrite_rules');
function hwlo_query_vars($query_vars) {
   $query_vars[] = HWLO_QUERY_VAR;
   return $query_vars;
}
add_filter('query_vars', 'hwlo_query_vars');
function hwlo_template_include($template) {
   if (empty($action = get_query_var(HWLO_QUERY_VAR))) {
      // hwlo_action hasn't been passed.
   } elseif ($action != 'logout') {
      // Some other action has somehow been passed.
   } else {
      wp_logout();
   }
   return $template;
}
add_filter('template_include', 'hwlo_template_include'); 

Xóa Permalinks sau đó Kiểm tra

Khi bạn đã lưu tệp này, bạn cần phải làm một việc nữa trước khi điểm cuối URL / logout hoạt động. Bạn cần xóa các quy tắc ghi lại URL trong WordPress.

Trong khu vực quản trị trang web của bạn, đi tới Cài đặt > Liên kết cố định và sau đó " Lưu thay đổi ".

Đó là nó.

Nếu bạn truy cập https://your-amazing-website.com / logout, bạn sẽ thấy WordPress đăng xuất bạn. Bạn cũng có thể thêm URL này vào một mục menu và bạn đã sẵn sàng!