Form di login personalizzato
Sono molto nuovo su WordPress. Sto cercando di visualizzare un form di login nella sezione header del mio sito web. Tuttavia, quando guardo tutti i file nella mia directory è molto intimidatorio e ho paura di toccare qualsiasi cosa.
Qualcuno conosce dei buoni tutorial sull'argomento o può fare un po' di luce sulla questione?

Il modulo di login è un semplice form HTML che invia username e password a wp-login.php. Questo è il modo più semplice per creare un modulo di login personalizzato:
<?php
$redirect_to = '';
?>
<form name="loginform" id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="post">
<p>Username: <input id="user_login" type="text" size="20" value="" name="log"></p>
<p>Password: <input id="user_pass" type="password" size="20" value="" name="pwd"></p>
<p><input id="rememberme" type="checkbox" value="forever" name="rememberme"></p>
<p><input id="wp-submit" type="submit" value="Login" name="wp-submit"></p>
<input type="hidden" value="<?php echo esc_attr( $redirect_to ); ?>" name="redirect_to">
<input type="hidden" value="1" name="testcookie">
</form>
Riga per riga:
$redirect_to
: Se vuoi reindirizzare l'utente a una pagina specifica dopo il login, inserisci l'URL qui. L'URL verrà inserito nel campo nascosto alla fine del form<form ... action="...">
: I dati devono essere inviati a wp-login.php. Questo file si trova nella root dell'installazione WordPress. Crea l'URL corretto consite_url()
(consulta il codex per maggiori informazioni susite_url()
). Il metodo deve essere impostato supost
- Un campo di input per l'username con id
user_login
- Un campo di input per la password con id
user_pass
- Un checkbox per il 'Ricordami' (opzionale)
- Un pulsante di invio
- Il campo nascosto per il reindirizzamento dopo il login (opzionale)
- Un campo nascosto per il test dei cookie (opzionale ma utile)
Crea un modulo e personalizzalo con CSS. Questo è tutto.

Crea un file template all'interno della directory del tuo child theme, chiamiamolo
login.php
. Inserisci il modulo di login all'interno di questo file:<form action="" method="post"> <div> Nome utente: <input name="log" type="text" /> </div> <div> Password: <input name="pwd" type="password" /> </div> <div> <input type="submit" value="Accedi" /> <input type="hidden" name="action" value="my_login_action" /> </div> </form>
Modifica quello che preferisci, ma dovresti lasciare intatti gli attributi name
Crea un file
functions.php
all'interno della directory del tuo child theme, oppure se ne hai già uno, modificarlo. Gestirai le richieste di login al suo interno:add_action('init', function(){ // non è la richiesta di login? if(!isset($_POST['action']) || $_POST['action'] !== 'my_login_action') return; // vedi il codex per wp_signon() $result = wp_signon(); if(is_wp_error($result)) wp_die('Accesso fallito. Password o nome utente errati?'); // reindirizza alla pagina richiesta se il login è andato a buon fine header('Location: ' . $_SERVER['REQUEST_URI']); exit; });
Crea una copia del tuo template
header.php
, inseriscila nella cartella del child theme e modificala. Aggiungi questo codice dove vuoi che appaia il modulo di login:<?php if(!is_user_logged_in()){ get_template_part('login'); } ?>

Adoro assolutamente questo esempio. Cosa dovrei scrivere per la stessa cosa ma con un modulo di registrazione invece di $result = wp_signon(); ?


Inoltre, puoi personalizzare il modulo di login originale nel tuo tema WordPress.
Ci sono diverse cose che puoi fare. 1) Puoi cambiare il logo di WordPress:
<?php
//Logo personalizzato
function my_custom_login_logo() {
echo '<style type="text/css">
h1 a { background-image:url('.get_bloginfo('template_url').'/images/logo.png) !important; }
</style>';
}
add_action('login_head', 'my_custom_login_logo');
// Login personalizzato
function my_login_logo_url() {
return get_bloginfo( 'url' );
}
add_filter( 'login_headerurl', 'my_login_logo_url' );
function my_login_logo_url_title() {
return '[url]';
}
add_filter( 'login_headertitle', 'my_login_logo_url_title' );
?>
2) Puoi rimuovere l'effetto "shake" del login di WordPress:
<?php
function my_login_head() {
remove_action('login_head', 'wp_shake_js', 12);
}
add_action('login_head', 'my_login_head');
?>
3) Rimuovere gli errori di login:
<?php
add_filter('login_errors',create_function('$a', "return null;"));
?>
Importante:
Non utilizzare tutti questi frammenti di codice nel file functions.php
. Prima crea tre file separati con nomi che descrivano la function
come (es. my_custom_login_logo.php
, my_login_head.php
e remove_login_errors.php
) e poi richiama le 3 funzioni nel functions.php
esempio:
require_once('includes/secure/my_custom_login_logo.php');
require_once('includes/secure/my_login_head.php');
require_once('includes/secure/remove_login_errors.php');
includes e secure sono cartelle. Spero di esserti stato utile. Benvenuto.

Aggiunta di codici a wp-login.php. I codici del modulo sono riportati di seguito.
<form id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="POST">
<h5><strong>ACCESSO UTENTE</strong> <a href="uyeol.html"><i class="fa fa-gear"></i> CREA ACCOUNT.</a></h5>
<div class="newsletter-form">
<div class="newsletter-email">
<input id="user_login" type="text" name="grs_tcno" value="" placeholder="Utente">
</div>
<div class="newsletter-zip">
<input id="user_pass" type="password" name="grs_sifre" value="" placeholder="Password">
</div>
<div class="newsletter-submit">
<input id="wp-submit" type="submit" name="girisyap" value="login">
<input type="hidden" value="<?php echo esc_attr( $redirect_to ); ?>" name="redirect_to">
<input type="hidden" value="1" name="testcookie">
<i class="icons icon-right-thin"></i>
</div>
</div>
