Перенаправление на главную страницу после выхода
Я использую кастомное меню для входа/выхода, вот мой код:
<li>
<?php
if (is_user_logged_in()) {
$user = wp_get_current_user();
echo 'Добро пожаловать <strong><a href="http://kolkataonwheelsmagazine.com/wp-admin/index.php" >'.$user->user_firstname.'</a></strong>
| <a href="http://kolkataonwheelsmagazine.com/wp-login.php?action=logout"">Выйти</a>';
} else { ?>
<strong><?php wp_loginout(); ?></strong>
или <a href="<?php bloginfo('url') ?>/wp-login.php?action=register"> <strong>Регистрация</strong></a>
<?php }?>
</li>
но проблема в том, что:
происходит перенаправление на страницу входа, а не на текущую страницу...
Я хочу, чтобы после выхода происходило перенаправление на главную страницу. Пожалуйста, помогите...
Если вам нужно изменить только выход из системы (logout), а не вход (login), используйте функцию wp_logout_url(). И наоборот, для получения URL входа можно использовать wp_login_url().
Пример ссылки для выхода из системы:
<a href="<?php echo wp_logout_url( home_url() ); ?>" title="Выход">Выход</a>
Вы также можете использовать функцию wp_loginout(), но перенаправление будет работать как для входа, так и для выхода. Если это приемлемо, код может выглядеть так:
<?php wp_loginout( home_url() ); ?>

Начиная с WordPress 4.2.0
был добавлен фильтр хука выхода logout_redirect
.
apply_filters( 'logout_redirect', string $redirect_to, string $requested_redirect_to, WP_User $user )
Фильтр URL для перенаправления после выхода из системы.
Параметр | Описание |
---|---|
$redirect_to |
(string ) URL назначения для перенаправления. |
$requested_redirect_to |
(string ) Запрошенный URL назначения для перенаправления, переданный как параметр. |
$user |
(WP_User ) Объект WP_User для пользователя, который выходит из системы. |
Простой пример использования
<?php
add_filter( 'logout_redirect', function() {
return esc_url( home_url() );
} ); ?>
Используются анонимные функции, требуется PHP >
5.3
Узнать больше
- Аналогично работает для входа с фильтром
login_redirect
, добавленным в3.0.0
.

Попробуйте это
add_action('check_admin_referer', 'pfwp_logout_without_confirm', 10, 2);
function pfwp_logout_without_confirm($action, $result)
{
/**
* Разрешает выход без подтверждения
*/
if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : get_permalink( wp_logout_url() )// или кастомный URL;
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
}
}
