wake-up-neo.com

So deaktivieren Sie die Umleitung von "domain.com/login" zu "domain.com/wp-login.php"

Ich möchte etwas anderes als WordPress unter 'mydomain.com/login' installieren, aber WordPress leitet diesen Link '/ login' automatisch zu '/wp-login.php' um.

Wo kann ich diese Umleitung deaktivieren?

2
marek

Wenn Sie sich canonical.php ansehen, werden Sie feststellen, dass die wp_redirect_admin_locations -Funktion sehr spät eingehakt wird-- mit der Priorität 1000 . Dies bedeutet, dass fast jede mit redirect_canonical verknüpfte Funktion vor dieser ausgeführt wird. Entfernen Sie also bedingt wp_redirect_admin_locations aus dem 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 );
    }
  }
);
4
s_ha_dum

Diese Antwort basiert auf den Ergebnissen von "login" in Permalink-Weiterleitungen zu wp-login.php wp3.6

Deaktivieren Sie die Umleitung "/ login"

Wie dort bereits erwähnt, steht der entsprechende Code ganz am Ende in /wp-includes/canonical.php

Sie müssen die Standardeinstellung "wp_redirect_admin_locations" entfernen und sie durch eine leicht geänderte benutzerdefinierte Version ersetzen . Fügen Sie dies Ihrer function.php-Datei hinzu.

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');

Warum könnte dies nicht einmal notwendig sein

Beachten Sie auch, dass die Weiterleitung nur gilt, wenn unter/login nichts anderes angegeben ist. Sobald z.B. Wenn Sie eine Seite erstellen/sich anmelden, wird die Umleitung nicht mehr angewendet. (Siehe /wp-includes/canonical.php:553, wo dies geschieht.

0
kraftner