Hôm nay tôi sẽ chia sẻ với các bạn một thủ thuật nhỏ để chuyển hướng (redirect) sau khi đăng nhập hoặc đăng xuất tài khoản. Mặc định của WordPress là sau khi đăng nhập nó sẽ chuyển hướng đến trang Admin Dashboard quản lý, còn sau khi thoát nó sẽ quay lại trang đăng nhập. Nào chúng ta cùng làm nhé.
Chuyển hướng sau khi login hoặc logout
Để chuyển hướng về trang chủ sau khi đăng nhập cho tất cả user, các bạn thêm code dưới đây vào file functions.php:
function cswp_login_redirect() { return '/';}add_filter('login_redirect', 'cswp_login_redirect');
function cswp_login_redirect() {
return '/';
}
add_filter('login_redirect', 'cswp_login_redirect');
Hoặc bạn muốn các user thường thì chuyển hướng tới trang chủ, còn admin thì vào trang quản lý:
add_filter( 'login_redirect', 'cswp_login_redirect', 10, 3 );function cswp_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(); }}
add_filter( 'login_redirect', 'cswp_login_redirect', 10, 3 );
function cswp_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();
}
}
Chuyển hướng về trang hiện tại
Người dùng vào trang của bạn để tìm thông tin mà họ cần. Sau khi tìm thấy, bạn yêu cầu phải đăng nhập để xem chẳng hạn. Đăng nhập xong, bạn đưa họ trở về trang chủ. Thật quá bất tiện khi lại phải tìm lại lần nữa. Để giải quyết vấn đề này, các bạn làm theo hướng dẫn của tôi dưới đây:
Các bạn thêm đoạn code sau vào nơi muốn hiển thị nút Đăng nhập:
<a href=" <?php echo wp_login_url( $_SERVER['REQUEST_URI'] ); ?>">Đăng nhập</a>
<a href=" <?php echo wp_login_url( $_SERVER['REQUEST_URI'] ); ?>">Đăng nhập</a>
tương tự với nơi muốn hiện thị nút Đăng xuất:
<a href="<?php echo wp_logout_url( $_SERVER['REQUEST_URI'] ); ?>">Đăng xuất</a>
<a href="<?php echo wp_logout_url( $_SERVER['REQUEST_URI'] ); ?>">Đăng xuất</a>
Sở dĩ chúng ta phải làm thế vì các nút mặc định của WordPress không hỗ trợ, chúng ta phải thay thế các nút đó bằng nút mới và lưu lại liên kết mà người dùng truy cập trước khi họ thao tác.
Còn đoạn code dưới đây là để chuyển hướng về trang chủ sau khi đăng xuất:
add_filter('logout_url', 'cswp_logout', 10, 2);function cswp_logout($logouturl) { return $logouturl . '&redirect_to=' . urlencode( get_option( 'siteurl' ) );}add_action( 'init', 'cswp_logout_redirect' );function cswp_logout_redirect() { if( $_GET['loggedout'] == 'true' ) { wp_redirect( get_option( 'siteurl' ) ); exit; }}
add_filter('logout_url', 'cswp_logout', 10, 2);
function cswp_logout($logouturl) {
return $logouturl . '&redirect_to=' . urlencode( get_option( 'siteurl' ) );
}
add_action( 'init', 'cswp_logout_redirect' );
function cswp_logout_redirect() {
if( $_GET['loggedout'] == 'true' ) {
wp_redirect( get_option( 'siteurl' ) );
exit;
}
}
Bonus: Thêm nút Đăng nhập và Đăng xuất trên thanh menuadd_filter('wp_nav_menu_items','cswp_add_login_logout_to_menu',10,2); function cswp_add_login_logout_to_menu($items, $args) { if ($args->theme_location == 'primary') { if(is_user_logged_in()) { $items .= '<li><a href="'.wp_logout_url( $_SERVER['REQUEST_URI'] ).'">Đăng xuấ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; }
add_filter('wp_nav_menu_items','cswp_add_login_logout_to_menu',10,2);
function cswp_add_login_logout_to_menu($items, $args) {
if ($args->theme_location == 'primary') {
if(is_user_logged_in()) {
$items .= '<li><a href="'.wp_logout_url( $_SERVER['REQUEST_URI'] ).'">Đăng xuấ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;
}
Bạn có thể thay thế
primary thành
secondary hoặc vị trí menu mà bạn muốn nó hiển thị.
Với đoạn code trên, đối với người dùng chưa đăng nhập thì nó sẽ hiển thị nút Đăng ký và Đăng nhập, còn đối với người dùng đã đăng nhập rồi thì sẽ hiển thị nút Đăng xuất.
Tổng kết
Trên đây tôi đã hướng dẫn các bạn chuyển hướng sau khi đăng nhập và đăng xuất, tuy đây là một thủ thuật nhỏ nhưng rất hữu ích đấy nhé. Nếu có bất kỳ khó khăn nào hãy cho tôi biết ở phần comment nha. Chúc các bạn thành công.
Nguồn: Việt Hùng admin https://chiasewp.com/
Bình Luận