Как изменить стандартную ссылку выхода в админке WordPress
Вы можете фильтровать '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;
}

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

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

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

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

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

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

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

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

Я нашел решение здесь: 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;
}
Удачи!

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 );
}
}
Отображает ссылку, позволяющую пользователям перейти на страницу входа для авторизации или выхода из системы в зависимости от их текущего состояния.

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

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

Очень интересное решение — создать страницу "Выход" и затем создать её шаблон в основной папке вашей темы с помощью файла 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-кода вы можете выполнить множество действий перед выходом из системы.
