Перенаправление на главную страницу после выхода

10 июл. 2012 г., 16:22:16
Просмотры: 72.7K
Голосов: 13

Я использую кастомное меню для входа/выхода, вот мой код:

<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&quot;">Выйти</a>';
} else { ?>
  <strong><?php wp_loginout(); ?></strong>
  или <a href="<?php bloginfo('url') ?>/wp-login.php?action=register"> <strong>Регистрация</strong></a>
<?php }?>
    </li>

но проблема в том, что:

происходит перенаправление на страницу входа, а не на текущую страницу...

Я хочу, чтобы после выхода происходило перенаправление на главную страницу. Пожалуйста, помогите...

0
Все ответы на вопрос 6
0
31
add_action('wp_logout','auto_redirect_after_logout');

function auto_redirect_after_logout(){
  wp_safe_redirect( home_url() );
  exit;
}

Этот код выполнит нужное действие.

22 мар. 2020 г. 18:43:14
2

Если вам нужно изменить только выход из системы (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() ); ?>
10 июл. 2012 г. 16:24:50
Комментарии

Спасибо, Pontus, Я попробовал ваш код... но он не работает, переходит на страницу 404.php... Это мой второй пост, но проблема не решена... Пожалуйста, помогите мне...

Gopal Bhattacharjee Gopal Bhattacharjee
10 июл. 2012 г. 17:57:22

Попробуйте get_bloginfo('url') вместо home_url()

Deepak Kamat Deepak Kamat
30 янв. 2019 г. 11:38:14
1

Понтус Абрахамссон прав, это рабочий код, но вот еще один, который я использую в своей теме.

<a href="<?php echo wp_logout_url('$index.php'); ?>">Выйти</a>
10 июл. 2012 г. 19:32:05
Комментарии

Работает у меня с '/' для главной страницы, но не уверен, что означает $ здесь

Fanky Fanky
29 июн. 2020 г. 16:15:44
0

Начиная с 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.
24 мар. 2021 г. 02:42:20
0

Начиная с WordPress 4.2.0 вы можете просто добавить:

add_filter('logout_redirect', 'get_home_url');
31 мар. 2022 г. 22:38:10
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('&amp;', '&', wp_logout_url($redirect_to));
        header("Location: $location");
        die;
    }
}
26 мар. 2022 г. 20:44:12