Formular personalizat de autentificare
Sunt foarte nou în WordPress. Încerc să afișez un formular de autentificare în secțiunea header a site-ului meu web. Cu toate acestea, când mă uit la toate fișierele din directorul meu, este foarte copleșitor și mi-e teamă să modific ceva.
Știe cineva tutoriale bune pe această temă sau poate să ofere câteva clarificări despre această problemă?

Formularul de autentificare este un simplu formular HTML care trimite numele de utilizator și parola către wp-login.php. Aceasta este cea mai simplă metodă de a crea un formular personalizat de autentificare:
<?php
$redirect_to = '';
?>
<form name="loginform" id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="post">
<p>Utilizator: <input id="user_login" type="text" size="20" value="" name="log"></p>
<p>Parolă: <input id="user_pass" type="password" size="20" value="" name="pwd"></p>
<p><input id="rememberme" type="checkbox" value="forever" name="rememberme"> Ține-mă minte</p>
<p><input id="wp-submit" type="submit" value="Autentificare" 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>
Linie cu linie:
$redirect_to
: Dacă doriți ca utilizatorul să fie redirecționat către o pagină specială, inserați URL-ul aici. URL-ul va fi inserat în câmpul ascuns de la sfârșitul formularului<form ... action="...">
: Datele trebuie trimise către wp-login.php. Acest fișier se află în rădăcina instalației WordPress. Creați URL-ul corect cusite_url()
(vă rugăm să consultați codex-ul pentru mai multe informații despresite_url()
). Metoda trebuie setată lapost
- Un câmp de introducere pentru numele de utilizator cu id-ul
user_login
- Un câmp de introducere pentru parolă cu id-ul
user_pass
- Un câmp de tip checkbox pentru 'Ține-mă minte' (opțional)
- Un buton de trimitere
- Câmpul ascuns pentru redirecționarea utilizatorului după autentificare (opțional)
- Un câmp ascuns pentru un testcookie (opțional, dar util)
Creați un formular și stilizați-l cu CSS. Asta e tot.

Creează un fișier de template în directorul temei copil, de exemplu
login.php
. Pune formularul de autentificare în acest fișier:<form action="" method="post"> <div> Nume utilizator: <input name="log" type="text" /> </div> <div> Parolă: <input name="pwd" type="password" /> </div> <div> <input type="submit" value="Autentificare" /> <input type="hidden" name="action" value="my_login_action" /> </div> </form>
Modifică ce dorești, dar ar trebui să lași atributele name neschimbate
Creează un fișier
functions.php
în directorul temei copil, sau dacă ai deja unul, modifică-l. Vei procesa cererile de autentificare în el:add_action('init', function(){ // nu este cererea de autentificare? if(!isset($_POST['action']) || $_POST['action'] !== 'my_login_action') return; // vezi codex-ul pentru wp_signon() $result = wp_signon(); if(is_wp_error($result)) wp_die('Autentificare eșuată. Parolă sau nume de utilizator greșit?'); // redirecționează înapoi la pagina solicitată dacă autentificarea a reușit header('Location: ' . $_SERVER['REQUEST_URI']); exit; });
Creează o copie a template-ului
header.php
, pune-l în folderul temei copil și modifică-l. Adaugă acest cod unde dorești să apară formularul de autentificare:<?php if(!is_user_logged_in()){ get_template_part('login'); } ?>

Iubesc absolut acest exemplu. Ce ar trebui să scriu pentru același lucru, dar pentru un formular de înregistrare în loc de $result = wp_signon(); ?


De asemenea, poți personaliza formularul original de login în tema ta WordPress.
Există câteva lucruri pe care le poți face. 1) Poți schimba sigla WP:
<?php
//Logo personalizat
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 personalizat
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) Poți elimina efectul de zguduire al login-ului WP:
<?php
function my_login_head() {
remove_action('login_head', 'wp_shake_js', 12);
}
add_action('login_head', 'my_login_head');
?>
3) Elimină erorile de login:
<?php
add_filter('login_errors',create_function('$a', "return null;"));
?>
Important:
Nu folosi toate aceste fragmente de cod în functions.php
. Mai întâi creează fișiere separate cu nume care descriu funcția
precum (ex. my_custom_login_logo.php
, my_login_head.php
și remove_login_errors.php
) și apoi include cele 3 funcții în functions.php
exemplu:
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 și secure sunt foldere. Sper să te ajute. Bine ai venit.

adăugarea de coduri în wp-login.php. codurile formularului sunt mai jos.
<form id="loginform" action="<?php echo site_url( '/wp-login.php' ); ?>" method="POST">
<h5><strong>AUTENTIFICARE MEMBRU</strong> <a href="uyeol.html"><i class="fa fa-gear"></i> CREEAZĂ CONT.</a></h5>
<div class="newsletter-form">
<div class="newsletter-email">
<input id="user_login" type="text" name="grs_tcno" value="" placeholder="Utilizator">
</div>
<div class="newsletter-zip">
<input id="user_pass" type="password" name="grs_sifre" value="" placeholder="Parolă">
</div>
<div class="newsletter-submit">
<input id="wp-submit" type="submit" name="girisyap" value="autentificare">
<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>
