[英]Redirect to login page in wordpress
我是 wordpress 的新手。 我在http://localhost/wordpress/
上運行 wordpress 設置。 我現在面臨兩個問題:
路徑:
wp-content/themes/twentysixteen/header.php
<?php
if(get_permalink() != wp_login_url() && !is_user_logged_in()){
wp_redirect( wp_login_url() ); exit;
}
?>
由於上面的代碼不起作用,我嘗試通過讓用戶通過單擊login
按鈕手動登錄來繼續前進。 這是工作代碼:
<?php
if(get_permalink() != wp_login_url() && !is_user_logged_in()){
// wp_redirect( wp_login_url() ); exit;
?>
<a href="<?php echo wp_login_url( get_permalink() ); ?>" title="Login">Login</a>
<?php
}
?>
wp-admin
而不是主頁,即http://localhost/wordpress
。要將用戶從主頁重定向到登錄頁面,您可以使用 Wordpress 函數 is_user_logged_in,
https://developer.wordpress.org/reference/functions/is_user_logged_in/
if(!is_user_logged_in()) {
wp_redirect( wp_login_url() );
}
要在主頁而不是儀表板上重定向用戶,您可以遵循堆棧溢出上已發布的解決方案。
https://wordpress.org/support/topic/how-can-i-redirect-users-to-the-front-page-after-log-in
提供個性化或私人內容的WordPress網站通常希望將其用戶保持在網站的前端。 但是,WordPress登錄后會自動將用戶帶到后端儀表板。 顯然,我們需要能夠將這些用戶重定向到站點的前端。 但與此同時,任何管理員用戶仍可能希望最終停留在網站的后端。 WordPress使我們能夠使用login_redirect
過濾器來編輯用戶登錄后發送到的位置。
下面的代碼段將使您輕松檢測用戶的角色並將其重定向到適當的位置 :
<?php
/**
* WordPress function for redirecting users on login based on user role
*/
function my_login_redirect( $url, $request, $user ){
if( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) {
if( $user->has_cap( 'administrator' ) ) {
$url = admin_url();
} else {
$url = home_url('/members-only/');
}
}
return $url;
}
add_filter('login_redirect', 'my_login_redirect', 10, 3 );
請注意,上面代碼中的has_cap()方法將檢查用戶是否具有特定角色或能力。 此外,如果您希望傳遞特定的頁面或帖子ID,home_url()函數將采用一條相對路徑或相對路徑,也可以將其替換為get_permalink()。
另一種可能性是基於自定義用戶元數據在登錄時重定向WordPress用戶:
<?php
/**
* WordPress function for redirecting users based on custom user meta
*/
function my_login_redirect( $url, $request, $user ){
if( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) {
if( 'cool' == get_user_meta( $user->ID, '_is_cool', true ) ) {
$url = home_url('/cool-people-only/');
}
}
return $url;
}
add_filter('login_redirect', 'my_login_redirect', 10, 3 );
上面代碼的一種可能的用途是本地化。 例如,假設您的一家餐廳有五個地點。 當用戶登錄到您的網站時,他們可以將午餐訂單放置在自己喜歡的位置。 如果您只是將他們喜歡的位置存儲為自定義用戶元,那么您可以在他們登錄時檢查該數據並將其自動發送到正確的訂單頁面。
以下是您需要的一組代碼:
——
//Redirect user to the home page when they try to access admin panel while allowing Ajax requests.
function block_admin_access_for_subs()
{
// Restrict backend access for subscribers
if( is_admin() && !defined('DOING_AJAX') && (current_user_can('subscriber')) ){
wp_redirect(home_url());
exit;
}
}
add_action('init', 'block_admin_access_for_subs');
//Disable admin bar for specific user roles
add_action('after_setup_theme', 'remove_admin_bar_for_subs');
function remove_admin_bar_for_subs() {
if (current_user_can('subscriber') && !is_admin()) {
show_admin_bar(false);
}
}
在您希望將用戶重定向到登錄頁面的模板中添加以下代碼。
if ( !is_user_logged_in() ) {
auth_redirect();
}
來源: https : //codex.wordpress.org/Function_Reference/auth_redirect
嘗試通過傳遞一個 url 來做這樣的事情
<?php
if(get_permalink() != wp_login_url() && !is_user_logged_in()){
wp_redirect( wp_login_url($redirect) ); exit;
}
?>
並且您的重定向.. 必須是絕對的..
$redirect = site_url().'/login';
或任何您選擇的網址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.