Хук login_url
позволяет настраивать URL-адрес страницы авторизации WordPress, что особенно полезно при создании кастомных страниц для входа или перенаправления пользователей на разные страницы после авторизации. Этот фильтр применяется к URL, возвращаемому функцией wp_login_url()
.
apply_filters( 'login_url', string $login_url, string $redirect, bool $force_reauth );
Хук login_url
фильтрует URL-адрес страницы авторизации и принимает три параметра:
$login_url
— URL-адрес страницы авторизации (без HTML-кодирования).$redirect
— путь, на который будет перенаправлен пользователь после входа (если указан).$force_reauth
— флаг, указывающий, следует ли принудительно запрашивать повторную авторизацию, даже если cookie уже присутствует.
Пример 1: Установка кастомного URL для страницы авторизации
Этот код заменяет стандартный URL-адрес страницы входа на кастомный URL /custom-login
, который будет использоваться на всем сайте.
add_filter( 'login_url', 'custom_login_url', 10, 3 );
function custom_login_url( $login_url, $redirect, $force_reauth ) {
$login_url = site_url( '/custom-login/' );
if ( ! empty( $redirect ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $login_url );
}
if ( $force_reauth ) {
$login_url = add_query_arg( 'reauth', '1', $login_url );
}
return $login_url;
}
Пример 2: Перенаправление на страницу «Мой аккаунт» WooCommerce
Если на сайте используется WooCommerce, можно перенаправить пользователей на страницу «Мой аккаунт» после входа. Это позволит пользователям сразу попасть на страницу управления своим аккаунтом.
add_filter( 'login_url', 'wc_custom_login_url', 10, 3 );
function wc_custom_login_url( $login_url, $redirect, $force_reauth ) {
$login_url = wc_get_page_permalink( 'myaccount' );
if ( ! empty( $redirect ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $login_url );
}
return $login_url;
}
Пример 3: Перенаправление на страницу с пользовательской авторизацией
Этот пример изменяет URL страницы входа на /user-login/
. Он может быть полезен, если вы используете сторонний плагин для авторизации.
add_filter( 'login_url', 'custom_user_login_url', 10, 3 );
function custom_user_login_url( $login_url, $redirect, $force_reauth ) {
$login_url = home_url( '/user-login/' );
if ( ! empty( $redirect ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $login_url );
}
if ( $force_reauth ) {
$login_url = add_query_arg( 'reauth', '1', $login_url );
}
return $login_url;
}
Пример 4: Установка кастомного URL для входа и принудительное повторное подтверждение
В этом примере мы перенаправляем пользователя на страницу /custom-login
и добавляем параметр reauth=1
для принудительного повторного подтверждения.
add_filter( 'login_url', 'force_custom_login_with_reauth', 10, 3 );
function force_custom_login_with_reauth( $login_url, $redirect, $force_reauth ) {
$login_url = site_url( '/custom-login/' );
if ( $force_reauth || ! empty( $redirect ) ) {
$login_url = add_query_arg( [
'redirect_to' => urlencode( $redirect ),
'reauth' => '1'
], $login_url );
}
return $login_url;
}
Пример 5: Перенаправление на страницу авторизации с возвращением на запрашиваемую страницу
Этот код перенаправляет пользователя на страницу /login
и при этом сохраняет запрошенный URL для последующего редиректа.
add_filter( 'login_url', 'redirect_to_custom_login_with_request', 10, 3 );
function redirect_to_custom_login_with_request( $login_url, $redirect, $force_reauth ) {
$custom_login_page = home_url( '/login/' );
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $custom_login_page );
return $login_url;
}
Заключение
Хук login_url
дает возможность гибко настраивать URL для страницы авторизации в WordPress. Вы можете задать уникальный URL для входа, использовать кастомные страницы авторизации или перенаправлять пользователей на нужные страницы после входа.