Reindirizzare wp-login.php ad un'altra pagina

7 gen 2014, 12:54:25
Visualizzazioni: 19.9K
Voti: 3

Vorrei reindirizzare la pagina wp-login.php alla pagina /login. Quindi quando un utente clicca su un link come questo <a href="/wp-login.php">accedi</a>, WordPress lo reindirizzerà a /register.

Ho trovato questa funzione e l'ho modificata:

add_action('init','custom_login');

function custom_login(){
 global $pagenow;
 if (( 'wp-login.php' == $pagenow ) && (!is_user_logged_in())) {
  wp_redirect('/login');
  exit();
 }

Non sono molto esperto con la programmazione WordPress.

Il reindirizzamento funziona correttamente, ma l'autenticazione sembra essere compromessa. Quando inserisco login/password, la stessa pagina (/login) si ricarica senza effettuare l'autenticazione.

Avete suggerimenti per correggere la funzione di reindirizzamento?

1
Commenti

quello che vuoi è una pagina di login personalizzata, puoi trovare numerosi tutorial su come farlo, e per evitare il reindirizzamento della pagina di login personalizzata a wp-login.php il seguente Link potrebbe aiutarti.

Maruti Mohanty Maruti Mohanty
7 gen 2014 13:17:09
Tutte le risposte alla domanda 4
0

Se sei interessato solo ai link di accesso visualizzati sulle tue pagine, dovresti essere in grado di modificare l'URL agganciando il filtro login_url. Questo non reindirizzerà un utente che digita direttamente http://MYSITE/wp-login.php nel browser, ma dovrebbe influenzare i link di accesso visualizzati in tutto il tuo sito.

Questo è il codice di esempio dalla pagina Codex di login_url:

add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
  return home_url( '/my-login-page/?redirect_to=' . $redirect );
}
28 gen 2016 13:05:13
0

1. Modifica il tuo file .htaccess – aggiungi questa riga dopo la regola di riscrittura di index.php:

RewriteRule ^index\.php$ – [L]<br />
RewriteRule ^tuopercorsosegreto$ wp-login.php [L,NC,QSA]

dove tuopercorsosegreto è il percorso al tuo pannello di amministrazione.

2. Modifica la funzione login_header nel file wp-login.php – aggiungi questo codice appena prima della riga 59 (dove inizia il tag HTML doctype, per prevenire errori di invio degli header):

<?php $uri = $_SERVER['REQUEST_URI']; if(stripos($uri, ‘wp-login’) or stripos($uri, ‘wp-admin’) && !stripos($GLOBALS["HTTP_COOKIE"], ‘wordpress_logged_in’)) {  header("Location: ".get_site_url().'/tuopercorsosegreto' ); exit(); } ?>
7 gen 2014 15:39:58
0

In realtà ho già un plugin open source che fa esattamente questo:

https://github.com/tripflex/wp-login-flow

È stato creato per richiedere agli utenti di verificare le loro email, ma puoi disabilitare questa funzionalità e utilizzare solo la funzione di riscrittura, che è funzionante nell'ultima versione disponibile sul repository di WordPress (1.0.0).

Puoi dare un'occhiata al codice per vedere come gestisco le riscritture:

https://github.com/tripflex/wp-login-flow/blob/master/classes/rewrite.php#L312

Sto lavorando proprio adesso a degli aggiornamenti importanti e a delle patch, ma per ora la versione 1.0.0 funziona perfettamente per le riscritture. Buon utilizzo :)

7 mag 2015 02:50:59
0
-2

Se creerai una pagina di login personalizzata all'indirizzo /login, allora crea un rewrite:

function restrict_admin() {

    if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
                wp_redirect( site_url() );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

Questo codice verificherà se l'utente è un amministratore e se non lo è WordPress lo reindirizzerà alla homepage del sito.

Crea anche un template separato per il tuo login personalizzato e utilizza i valori predefiniti di WordPress all'interno del template:

$args = array( 'redirect' => site_url( $_SERVER['REQUEST_URI'] ) );
wp_login_form( $args );

Puoi anche modificare l'indirizzo di reindirizzamento per la pagina di login. Ma è utile anche verificare gli errori di login e magari aggiungere del codice per il corretto reindirizzamento dopo un tentativo fallito. Per queste operazioni utilizza gli hook wp_login_failed e authenticate.

7 gen 2014 14:48:18