Form di login personalizzato

20 gen 2013, 21:37:33
Visualizzazioni: 38K
Voti: 10

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?

0
Tutte le risposte alla domanda 4
0
18

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 con site_url() (consulta il codex per maggiori informazioni su site_url()). Il metodo deve essere impostato su post
  • 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.

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

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

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

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

wp_create_user

onetrickpony onetrickpony
31 mag 2013 13:11:59
0

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.

21 gen 2013 03:16:37
1

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>
2 gen 2019 13:40:59
Commenti

Non c'è mai un buon motivo per modificare i file core!

bueltge bueltge
2 gen 2019 15:37:46