Chào các bạn! dạo này bận rộn nên ít có thời gian tìm hiểu thêm các thủ thuật cho WordPress, hôm nay tranh thủ quay trở lại với một thủ thuật nhỏ liên quan đến việc chuyển hướng hay còn gọi là redirect sau khi thực hiện đăng nhập hoặc đăng xuất tài khoản. Mặc định của WordPress là sau khi đăng nhập sẽ được chuyển hướng đến trang dashboard quản lý còn sau khi thoát khỏi tài khoản sẽ quay trở lại trang đăng nhập. Điều này theo mình thấy có hơi vô lý một chút 


. Bây giờ mình sẽ sử dụng một thủ thuật nhỏ để chuyển hướng hợp lý hơn.

Chuyển hướng về trang chủ sau khi login hay logout

Để chuyển hướng về trang chủ sau khi đăng nhập cho tất cả users, ta sử dụng một trong hai đoạn code sau:
Code 1:

1
2
3
4
5
add_action('wp_login','my_login');
function my_login() {
    wp_redirect( home_url());
    exit();
}

Code 2:

1
2
3
4
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
function login_redirect( $redirect_to, $request, $user ) {
       return home_url();
}


Nếu bạn chỉ muốn chuyển hướng về trang chủ cho các thành viên đăng ký, còn đối với tài khoản quyền admin thì được chuyển hướng đến trang quản lý, bạn sử dụng đoạn code dưới đây:

1
2
3
4
5
6
7
8
9
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
function login_redirect( $redirect_to, $request, $user ) {
    if ( is_array( $user->roles ) ) {
        if ( in_array( 'administrator', $user->roles ) )
            return home_url( '/wp-admin/' );
        else
            return home_url();
    }
}

Tiếp theo là chuyển hướng về trang chủ sau khi thoát khỏi tài khoản, ta sử dụng code sau:

1
2
3
4
5
add_action('wp_logout','my_logout');
function my_logout() {
    wp_redirect( home_url());
    exit();
}

Với các đoạn code trên, bạn sẽ thay đổi chuyển hướng cho tất cả các nút login và logout mặc định trên blog.

Chuyển hướng về trang hiện hành

Bây giờ ta sẽ thực hiện chuyển hướng về lại trang hiện hành trước khi đăng nhập hay thoát khỏi tài khoản. Mình lấy ví dụ khách ghé thăm trang của bạn và tìm thấy một phần mềm hay gì đó vừa ý trong khi blog của bạn cài đặt chức năng bắt buộc phải đăng nhập mới có thể nhìn thấy link download. Nhưng sau khi đăng nhập lại được chuyển hướng về trang quản lý hay trang chủ thì hơi vô lý. Vì vậy ta cần phải chuyển hướng về trang hiện tại trước khi đăng nhập. Để thực hiện điều này, ta phải tạo ra một nút đăng nhập riêng trên blog với code sau:

1
<a href=" <?php echo wp_login_url( $_SERVER['REQUEST_URI'] ); ?>">Login</a>

Và tương tự như vậy, ta sẽ sử dụng code sau để chuyển hướng về trang hiện hành khi thoát khỏi tài khoản:

1
<a href="<?php echo wp_logout_url( $_SERVER['REQUEST_URI'] ); ?>">Logout</a>

Bạn chèn hai đoạn code trên vào vị trí bạn muốn hiển thị hai nút login và logout.

Chèn login và logout vào thanh menu

Ta sẽ chèn code sau vào file functions.php của theme:

1
2
3
4
5
6
7
8
9
10
11
12
add_filter('wp_nav_menu_items','add_log',10,2);
function add_log($items, $args) {
 if ($args->theme_location == 'primary') { 
   if(is_user_logged_in()) {
      $items .= '<li><a href="'.wp_logout_url( $_SERVER['REQUEST_URI'] ).'">Thoát</a></li>';
   } else {
      $items .= '<li><a href="'.wp_login_url( $_SERVER['REQUEST_URI'] ).'">Đăng nhập</a></li>
                 <li><a href="/wp-login.php?action=register">Đăng ký</a></li>';
    }
 }
  return $items;       
}

Nếu thành viên chưa đăng nhập sẽ sẽ thấy hai nút đăng nhập và đăng ký, nếu thành viên đã đăng nhập sẽ thấy nút thoát.

Ngoài cách sử dụng các đoạn code trên để chuyển hướng sau khi login hay logout, bạn có thể sử dụng các plugin để thực hiện việc này. Bạn có thể tìm thấy khá nhiều plugin hổ trợ bằng cách gõ từ khóa login redirect ở khu vực tìm kiếm plugin.

ĐỂ LẠI PHẢN HỒI CỦA BẠN TẠI ĐÂY

Phản hồi về bài viết này

1 COMMENT

LEAVE A REPLY


*