Cómo cambiar el enlace de logout predeterminado en el Admin de WordPress
Quiero usar otro enlace para logout porque tengo /wp-admin/*
protegido con htpassword. ¿Hay alguna forma de hacer esto? ¿Algo como crear una página personalizada como sitio.com/logout
y luego usarla como mi nuevo enlace de logout?
¡Gracias!

Puedes filtrar 'logout_url'
y devolver un valor personalizado si estás en el área de administración:
add_filter( 'logout_url', 'wpse_58453_logout_url' );
function wpse_58453_logout_url( $default )
{
// establece tu URL personalizada aquí
return is_admin() ? 'http://example.com/custom' : $default;
}

¿Pero por qué obtengo un 404? Intenté mysite.com/logout pero obtengo un 404, ¿necesito agregar algún código al final de la URL?

Bueno, el objetivo debería existir en algún lugar. :) Podrías crear un endpoint personalizado (ejemplo).

¿Qué hará con el endpoint? Creé una página llamada 'logout' y solo la redirige allí, ¿qué necesito agregar en la página de logout? Gracias por tu respuesta.

No estoy seguro si todavía te sigo... ¿quizás esa es una pregunta aparte?

No, es la misma pregunta. Esta es la cuestión: seguí tu función, la agregué a mi archivo de funciones personalizadas y luego la configuré como "misitio.com/logout", donde logout es una página de WordPress. Cuando hago <?php echo wp_logout_url( ); ?>
me da la URL correcta de cierre de sesión, que es misitio.com/logout, pero cuando hago clic en ella, simplemente me redirige a la página de WordPress /logout. ¿Necesito configurar algún código en mi página /logout
de WordPress?

No entiendo. ¿Qué tiene de malo que te redirija a /logout
si esa es la página que configuraste en la función?

http://mysite.com/wp-login.php?action=logout&redirect_to=url
Actualmente esta es la URL predeterminada de cierre de sesión para mi sitio. No quiero usar este enlace. Quiero usar algo como http://mysite.com/logout
para realizar la acción de cierre de sesión. No tengo problema con la redirección después del cierre de sesión. Espero que entiendan mi punto. ¡Gracias!

continuemos esta discusión en el chat

Encontré la solución aquí: https://www.kmbytes.com/wordpress-logout-redirect-filter/

Encontré la solución aquí: https://www.kmbytes.com/wordpress-logout-redirect-filter/
¡Y funciona genial!
add_filter( 'logout_url', 'my_logout_url' );
function my_logout_url( $url ) {
$redirect = home_url();
return $url.'&redirect_to='.$redirect;
}
¡Saludos!

function wp_loginout( $redirect = '', $echo = true ) {
if ( ! is_user_logged_in() ) {
$link = '<a href="' . esc_url( wp_login_url( $redirect ) ) . '">' . __( 'Iniciar sesión' ) . '</a>';
} else {
$link = '<a href="' . esc_url( wp_logout_url( $redirect ) ) . '">' . __( 'Cerrar sesión' ) . '</a>';
}
if ( $echo ) {
/**
* Filtra la salida HTML para el enlace de Iniciar/Cerrar sesión.
*
* @since 1.5.0
*
* @param string $link El contenido HTML del enlace.
*/
echo apply_filters( 'loginout', $link );
} else {
/** Este filtro está documentado en wp-includes/general-template.php */
return apply_filters( 'loginout', $link );
}
}
Muestra un enlace que permite a los usuarios navegar a la página de Inicio de sesión para iniciar o cerrar sesión, dependiendo de si actualmente están conectados.

¡Bienvenido a la comunidad de Desarrollo de WordPress! Esta función es tal como se anuncia, sin embargo no resuelve realmente la pregunta, que estaba preguntando cómo cambiar el destino del enlace ya disponible

Esto no proporciona una respuesta a la pregunta. Una vez que tengas suficiente reputación podrás comentar en cualquier publicación; en su lugar, proporciona respuestas que no requieran aclaración del que pregunta. - Desde la Revisión

Una solución muy interesante es crear una página "Cerrar sesión" y luego crear su plantilla en la carpeta principal de tu tema mediante el archivo page-{tu-slug-de-logout}.php
. Aquí está el código más simple para esta página.
if ( is_user_logged_in() ) :
wp_logout();
wp_redirect(site_url());
else :
wp_redirect(site_url());
endif;
Añade un argumento a site_url()
con cualquier slug o déjalo vacío para ser redirigido a tu página de inicio al cerrar sesión. Es una buena opción porque usando cualquier código PHP puedes realizar muchas acciones antes de cerrar sesión.
