wake-up-neo.com

umleitung bei Aufruf von/wp-admin an/wp-login beenden

Ich baue eine Website mit WordPress + BuddyPress (neueste Version).

Auf dieser Website habe ich meine eigenen benutzerdefinierten Anmeldeformulare und möchte sie nicht mit Back-End-WP-Formularen verknüpfen.

Und ich habe Back-End-Formulare für alle Benutzer blockiert (Standard wp-login | signup | resetpass forms) (mit einem 404)

Wenn Sie also versuchen, zu wp-admin/wp-login zu gelangen, sehen Sie den 404.

Ich möchte keine Umleitung verwenden. Ich möchte, dass die Umleitung auf eine bestimmte URL gestoppt wird, um die Umleitung von dieser URL auf andere URLs zu stoppen.

Ich möchte die Umleitung von /wp-admin zu /wp-login.php?redirect_to=http%3A%2F%2Fsite.com%2Fwp-admin%2F&reauth=1 beenden

Wenn Sie versuchen zu erreichen:

www.example.com/wp-admin

und du bist nicht eingeloggt , wirst du automatisch weitergeleitet zu:

example.com/wp-login.php?redirect_to=http%3A%2F%2Fsite.com%2Fwp-admin%2F&reauth=1

sie werden weitergeleitet ...
Die URL ändert sich automatisch
Dies ist die Standardaktion von WordPress.

Ich möchte diese automatische Umleitung stoppen.

wenn Sie versuchen,/wp-admin zu erreichen, müssen Sie bei/wp-admin bleiben (Sie sollten keine Umleitung zu wp-login erhalten ..)

bitte sehen Sie diese 2 Bilder für vollständige Details :
1 - Bild 1 - yoursite.com/wp-admin
2 - Bild 2 - Sie sehen die URL automatisch geändert ..

  • NOTE: der 404 ist etwas, das ich mit benutzerdefiniertem Code gemacht habe, um zu passieren ..., es ist kein Fehler.

ich habe so viele Codes getestet, um es zu stoppen. aber keiner hat für mich gearbeitet.

codenummer 1:

remove_action('template_redirect', 'redirect_canonical');

codenummer 2:

remove_filter('template_redirect', 'redirect_canonical');

codenummer 3:

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

codenummer 4:

function custom_wp_redirect_admin_locations() {
global $wp_rewrite;
if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) )
    return;
$admins = array(
    home_url( 'wp-admin', 'relative' ),
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) {
           $wp_query->set_404();
           get_template_part( 404 ); 
           exit();
}
$logins = array(
    home_url( 'wp-login.php', 'relative' )
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
             $wp_query->set_404();
             get_template_part( 404 ); 
             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');

codierte Nummer 5:

add_action(
'template_redirect', 
function() {
$requ = untrailingslashit($_SERVER['REQUEST_URI']);
if (site_url('wp-admin','relative') ===  
untrailingslashit($_SERVER['REQUEST_URI'] )){
  remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
}
}
);

codenummer 6:

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

$requested_url = untrailingslashit( $_SERVER['REQUEST_URI'] );

$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 ) ) {
redirect_canonical( $requested_url , false );
    exit;
}

$logins = array(
    home_url( 'wp-login.php', 'relative' )
);
if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
redirect_canonical( $requested_url , false );
    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');

was auch immer ich verwendet habe, scheint nicht das zu tun, was ich will. wie kann ich es tun?

danke vielmals.


BEARBEITEN: Dies ist kein Duplikat.

ich habe auch diese Artikel gelesen:

1 - dieser Artikel
2 - dieser Artikel
3 - dieser Artikel

3
Poofy

danke an Tomasz Struczynski, der meine Frage vollständig erklärt und beantwortet hat

Sie können die Antwort unter diesem Link sehen


Erstens - Erklärung.

Wordpress ist etwas knifflig, wenn es um Admin-Seiten geht. Im Wesentlichen wird beim Laden der Admin-Seite wp-admin/admin.php eingefügt. In dieser Datei wird eine Funktion namens auth_redirect() aufgerufen. Sie prüft, ob der Benutzer angemeldet ist und leitet ihn an eine Anmeldeseite weiter, falls dies nicht der Fall ist.

Da es sich bei dieser Funktion nicht um eine typische Aktion/einen typischen Filter handelt, ist es schwierig, sie zu deaktivieren. Glücklicherweise ruft es mehrere Hooks auf. Einer von ihnen, auth_redirect_scheme, wird kurz vor der tatsächlichen Umleitung aufgerufen. Es ist beabsichtigt, ein "Schema" (http/https) für die Umleitung vorzubereiten, aber wir können es nutzen, um es Ihren Zielen anzupassen.

Ich habe einen Filter-Hook für auth_redirect_scheme mit der Priorität 9999 hinzugefügt (das ist eigentlich egal, aber ich wollte, dass er für alle Fälle zu spät ausgeführt wird). Ich habe dann ein Stück Code aus der ursprünglichen auth_redirect() genommen, um zu überprüfen, ob der Benutzer angemeldet ist (wp_validate_auth_cookie). Wenn dies der Fall ist, geben wir nur den Wert zurück, da nichts getan werden muss. Wenn der Benutzer jedoch nicht angemeldet ist, wird eine Fehlerseite angezeigt und das Skript beendet (um eine Umleitung zu verhindern).

Nur für den Fall, dass ich den wp_redirect_admin_locations-Filter deaktiviert habe. Ich bin mir nicht sicher, ob das nötig ist, aber ...

Und jetzt - der Code. Beachten Sie, dass dies möglicherweise nicht die perfekte Lösung ist und dass einige Verbesserungen von Ihrer Seite erforderlich sind.

<?php
/**
 * @packageStop_Redirect
 */
/*
Plugin Name: Stop redirect
Plugin URI: 
Description: Stop redirecting anything to wp-login
Author: Tomasz Struczyński
Version: 0.1
Author URI: 
*/

add_action('init', 'remove_default_redirect');
add_filter('auth_redirect_scheme', 'stop_redirect', 9999);

function stop_redirect($scheme)
{
    if ( $user_id = wp_validate_auth_cookie( '',  $scheme) ) {
        return $scheme;
    }

    global $wp_query;
    $wp_query->set_404();
    get_template_part( 404 );
    exit();
}

function remove_default_redirect()
{
    remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
}
1
Poofy