Cómo desactivar la redirección de 'domain.com/login' a 'domain.com/wp-login.php'

2

Quiero instalar algo diferente a wordpress en 'mydomain.com/login', pero WordPress redirige automáticamente este enlace '/ login' a '/wp-login.php'.

¿Dónde puedo desactivar esta redirección?

    
pregunta marek 18.02.2014 - 13:37

2 respuestas

4

Si observa canonical.php lo hará observe que la función wp_redirect_admin_locations está enganchada muy tarde-- at prioridad 1000 . Esto significa que casi cualquier función enganchada a redirect_canonical se ejecuta antes de esta. Por lo tanto, elimine condicionalmente wp_redirect_admin_locations del template_redirect hook.

add_action(
  'template_redirect', 
  function() {
    $requ = untrailingslashit($_SERVER['REQUEST_URI']);
    if (site_url('login','relative') === untrailingslashit( $_SERVER['REQUEST_URI'] )){
      remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
    }
  }
);
    
respondido por el s_ha_dum 18.02.2014 - 15:12
0

Esta respuesta se basa en los descubrimientos de “ login "en permalink redirige a wp-login.php wp3.6

Deshabilita la redirección "/ login"

Como ya se indicó, el código relevante se encuentra al final en /wp-includes/canonical.php

Debes eliminar el "wp_redirect_admin_locations" y reemplazarlo con una versión personalizada ligeramente modificada . Agrega esto a tu archivo function.php.

function custom_wp_redirect_admin_locations() {
    global $wp_rewrite;
    if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) )
        return;

    $admins = array(
        home_url( 'wp-admin', 'relative' ),
        home_url( 'dashboard', 'relative' ),
        home_url( 'admin', 'relative' ),
        site_url( 'dashboard', 'relative' ),
        site_url( 'admin', 'relative' ),
    );
    if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) {
        wp_redirect( admin_url() );
        exit;
    }

    $logins = array(
        home_url( 'wp-login.php', 'relative' )
    );
    if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
        wp_redirect( site_url( 'wp-login.php', 'login' ) );
        exit;
    }
}

function remove_default_login_redirect() {
    remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
    add_action( 'template_redirect', 'custom_wp_redirect_admin_locations', 1000 );
}

add_action('init','remove_default_login_redirect');

Por qué esto podría no ser necesario

También debe tener en cuenta que la redirección solo se aplica si no hay nada más en / login. Tan pronto como por ejemplo creas una página / login, la redirección ya no se aplica. (Consulte /wp-includes/canonical.php:553 para ver dónde ocurre esto.

    
respondido por el kraftner 18.02.2014 - 14:52

Lea otras preguntas en las etiquetas