Как изменить стандартную ссылку выхода в админке WordPress

14 июл. 2012 г., 03:42:23
Просмотры: 18.7K
Голосов: 6

Я хочу использовать другую ссылку для выхода, потому что у меня /wp-admin/* защищен через htpassword. Есть ли способ это сделать? Например, создать кастомную страницу типа site.com/logout и использовать ее как новую ссылку выхода?

Спасибо!

0
Все ответы на вопрос 6
9

Вы можете фильтровать 'logout_url' и возвращать кастомное значение, если находитесь в админке:

add_filter( 'logout_url', 'wpse_58453_logout_url' );
function wpse_58453_logout_url( $default ) 
{
    // укажите ваш URL здесь
    return is_admin() ? 'http://example.com/custom' : $default;
}
14 июл. 2012 г. 03:55:04
Комментарии

Но почему я получаю 404? Я пробовал mysite.com/logout, но получаю 404, нужно ли добавлять какой-то код в конец URL?

tiltdown tiltdown
14 июл. 2012 г. 10:12:05

Ну, цель должна где-то существовать. :) Вы можете создать пользовательскую точку входа (пример).

fuxia fuxia
14 июл. 2012 г. 10:15:21

Что делать с этой точкой входа? Я создал страницу с названием 'logout', и она просто перенаправляет туда. Что нужно добавить на страницу выхода? Спасибо за ответ.

tiltdown tiltdown
14 июл. 2012 г. 10:27:23

Я не совсем понимаю... Возможно, это отдельный вопрос?

fuxia fuxia
14 июл. 2012 г. 11:21:44

Нет, это тот же вопрос. Дело в том, что я добавил вашу функцию в свой файл пользовательских функций и сделал страницу выхода "mysite.com/logout". Когда я использую <?php echo wp_logout_url( ); ?>, он выдает правильный URL выхода — mysite.com/logout, но при клике просто перенаправляет меня на страницу WordPress /logout. Нужно ли прописывать какой-то код на странице /logout в WordPress?

tiltdown tiltdown
14 июл. 2012 г. 11:27:35

Не понимаю. В чем проблема с перенаправлением на /logout, если это страница, которую вы указали в функции?

fuxia fuxia
14 июл. 2012 г. 11:30:00

http://mysite.com/wp-login.php?action=logout&redirect_to=url В данный момент это стандартный URL выхода для моего сайта. Я не хочу использовать эту ссылку. Я хочу использовать что-то вроде http://mysite.com/logout для выполнения действия выхода. У меня нет проблем с перенаправлением после выхода. Надеюсь, вы поняли мою мысль. Спасибо!

tiltdown tiltdown
14 июл. 2012 г. 13:43:14

давайте продолжим обсуждение в чате

tiltdown tiltdown
14 июл. 2012 г. 13:49:02

Я нашел решение здесь: https://www.kmbytes.com/wordpress-logout-redirect-filter/

karlosuccess karlosuccess
4 мар. 2019 г. 20:12:34
Показать остальные 4 комментариев
0

Я думаю, вам следует добавить правило перезаписи в файл .htaccess, например, вот так.

RewriteRule ^logout/(.*) /wp-login.php?action=logout&_wpnonce=$1 [QSA,L]
23 дек. 2012 г. 13:39:00
1

Этот код сработал для меня, перенаправляя на главную страницу:

add_action('wp_logout','unlog');

function unlog(){
  wp_redirect( site_url() );
  exit();
}
15 дек. 2016 г. 20:08:57
Комментарии

Спасибо, это работает. Принятый ответ просто делал редирект без выхода из системы.

Fabian von Ellerts Fabian von Ellerts
13 мая 2019 г. 17:53:46
0

Я нашел решение здесь: https://www.kmbytes.com/wordpress-logout-redirect-filter/

И оно отлично работает!

add_filter( 'logout_url', 'my_logout_url' );
function my_logout_url( $url ) {
    $redirect = home_url();
    return $url.'&redirect_to='.$redirect;
}

Удачи!

4 мар. 2019 г. 20:11:54
2
    function wp_loginout( $redirect = '', $echo = true ) {
    if ( ! is_user_logged_in() ) {
        $link = '<a href="' . esc_url( wp_login_url( $redirect ) ) . '">' . __( 'Войти' ) . '</a>';
    } else {
        $link = '<a href="' . esc_url( wp_logout_url( $redirect ) ) . '">' . __( 'Выйти' ) . '</a>';
    }
 
    if ( $echo ) {
        /**
         * Фильтрует HTML-вывод для ссылки Вход/Выход.
         *
         * @since 1.5.0
         *
         * @param string $link HTML-содержимое ссылки.
         */
        echo apply_filters( 'loginout', $link );
    } else {
        /** Этот фильтр задокументирован в wp-includes/general-template.php */
        return apply_filters( 'loginout', $link );
    }
}

Отображает ссылку, позволяющую пользователям перейти на страницу входа для авторизации или выхода из системы в зависимости от их текущего состояния.

25 мая 2022 г. 07:08:42
Комментарии

Добро пожаловать в сообщество разработчиков WordPress! Эта функция действительно соответствует описанию, однако она не отвечает на заданный вопрос, в котором спрашивали, как изменить адрес уже имеющейся ссылки

bosco bosco
26 мая 2022 г. 21:23:01

Это не является ответом на вопрос. Когда у вас будет достаточно репутации, вы сможете комментировать любые сообщения; вместо этого предоставляйте ответы, не требующие уточнений от автора вопроса. - Из обзора

vancoder vancoder
27 мая 2022 г. 00:31:03
0

Очень интересное решение — создать страницу "Выход" и затем создать её шаблон в основной папке вашей темы с помощью файла page-{your-logout-slug}.php. И вот самый простой код для этой страницы.

    if ( is_user_logged_in() ) : 
        wp_logout();
        wp_redirect(site_url());
    else : 
        wp_redirect(site_url());
    endif;

Добавьте аргумент к site_url() с любым слагом или оставьте пустым, чтобы выход происходил на главную страницу. Это удобно, потому что с помощью любого PHP-кода вы можете выполнить множество действий перед выходом из системы.

9 февр. 2023 г. 04:33:11