Formular personalizat de autentificare

20 ian. 2013, 21:37:33
Vizualizări: 38K
Voturi: 10

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ă?

0
Toate răspunsurile la întrebare 4
0
18

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 cu site_url() (vă rugăm să consultați codex-ul pentru mai multe informații despre site_url()). Metoda trebuie setată la post
  • 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.

21 ian. 2013 03:52:27
2
  1. 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

  2. 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;
    });
    
  3. 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');
     }
    
    ?>
    
20 ian. 2013 22:16:08
Comentarii

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(); ?

Andrei Cristian Prodan Andrei Cristian Prodan
31 mai 2013 12:33:20

wp_create_user

onetrickpony onetrickpony
31 mai 2013 13:11:59
0

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.

21 ian. 2013 03:16:37
1

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>
2 ian. 2019 13:40:59
Comentarii

Nu există niciodată un indiciu bun pentru a edita fișierele de bază!

bueltge bueltge
2 ian. 2019 15:37:46