Come sviluppare un sito di appartenenza con WordPress parte 2

Cosa starai creando

Nella prima parte di questa serie, abbiamo coperto la personalizzazione della registrazione e dei moduli di accesso. Oggi parleremo di come aggiungere campi personalizzati al modulo di registrazione. Aggiungeremo un input di testo per un handle di Twitter e una casella di controllo in cui gli utenti dovranno accettare i termini prima di registrarsi. Il lavoro richiesto può essere diviso in tre parti:

  • Aggiungere i campi stessi
  • Convalida sui campi
  • Elaborazione dei dati

Lo faremo anche noi molto brevemente discutere i modi migliori per modellare le e-mail in uscita. Ciò significa che gli utenti riceveranno e-mail di marca piacevoli al momento della registrazione.  

Prima di iniziare, assicurati Chiunque può registrarsi è spuntato nelle impostazioni di WordPress (Impostazioni> Generale).  

C'è molto da fare; Iniziamo

Una delle cose migliori di WordPress è il modo in cui ti fornisce azioni e filtri. Questi ci permettono di collegarci agli eventi o filtrare i contenuti, il che ci dà l'opportunità di estendere con grazia WordPress.   

Quindi, usando l'azione register_form, colleghiamo il modulo di registrazione e aggiungiamo i nostri campi. Copia la seguente funzione nel nostro admin.php che abbiamo creato nella prima parte di questa serie.

 

Fondamentalmente stiamo inserendo alcuni nuovi campi nel nostro modulo di registrazione. Il markup utilizzato sta simulando quello dei campi nativi. Vogliamo anche mantenere i valori se la pagina viene ricaricata, quindi controlleremo se esistono $ _POST super globale. Potresti chiederti perché la nostra etichetta Twitter è racchiusa in una funzione: .

Il _E la funzione consente la traduzione - puoi leggere ulteriori informazioni sul codice WordPress.

Questo è grandioso, ma che ne dici di una convalida? Allo stato attuale, gli utenti possono inserire tutto ciò che desiderano o lasciarlo vuoto. Rendiamo i nostri campi obbligatori e assicuriamoci che il campo di testo abbia solo caratteri regolari per prevenire attacchi dannosi. Questa volta utilizzeremo un filtro WordPress: registration_errors. 

aggiungi ('twitter_name_error', __ ('ERRORE: Inserisci il tuo nome Twitter. ',' Saggio '));  if (preg_match ('/ [^ a-z _ \ - 0-9] / i', $ _POST ['twitter_name'])) $ errors-> add ('twitter_name_error', __ ('ERRORE: Si prega di utilizzare solo lettere, numeri, spazi e caratteri di sottolineatura. ',' Saggio '));  if (vuoto ($ _POST ['terms'])) $ errors-> add ('terms_error', __ ('ERRORE: Devi accettare i termini. ',' Saggio '));  return $ errors;  add_filter ('registration_errors', 'tutsplus_validate_registration', 10, 3);

Il filtro sopra è passato tre parametri: 

  1. Gli errori che sono stati elaborati
  2. L'email dell'utente
  3. Il nome utente igienizzato dell'utente

La funzione viene attivata dopo che il modulo è stato inviato ma prima che i dati raggiungano il database. Nel nostro caso stiamo controllando se i campi sono vuoti e se ci sono caratteri bizzarri nel nostro inserimento del nome Twitter. Se uno di questi è vero, passiamo un messaggio di errore a $ error oggetto che viene restituito.   

Nota: se stai ricevendo una casella di errore vuota, non preoccuparti. Il plug-in di sicurezza che abbiamo installato nella prima parte ha un'impostazione predefinita che nasconde i messaggi. Sotto il Twist di WordPress sezione, deselezionare l'opzione Disabilita i messaggi di errore di accesso.  

Ora il pezzo finale del nostro puzzle: elaborare i dati in modo che siano salvati nel nostro database contro quell'utente. Di nuovo useremo un'azione definita da WordPress (user_register) per collegarci a questo processo. Ci vuole un parametro, il ID utente-in questo modo sa a chi salvare i dati. Assumendo il $ _POST superglobal contiene i nostri dati, possiamo salvarli usando update_user_meta.

Campi personalizzati nell'amministratore

Al momento abbiamo raccolto i dati degli utenti, inclusi i nostri campi personalizzati, ma non possiamo modificare tali valori nell'amministratore di WordPress. Collegiamoci. Nel nostro admin.php aggiungi la seguente funzione:

 

Usando alcune azioni di WordPress possiamo facilmente aggiungere campi personalizzati. 


Ora per elaborare la meta utente personalizzata. 

Reindirizza su Login

Infine, vogliamo reindirizzare i nostri utenti a una pagina specifica quando sono connessi. Il default li invia al back-end di WordPress. Dimenticalo. Mandiamoli a una pagina "il mio account". Quindi, in primo luogo è necessario creare questa pagina nel back-end. Non preoccuparti dei contenuti per ora, perché ne parleremo nella prossima parte della serie. 

Ora che abbiamo la nostra pagina, incolla il codice qui sotto in ____. Php e dagli un test drive. Supponendo che la tua pagina "il mio account" abbia lo slug il mio account dovrebbe funzionare. Ancora una volta abbiamo usato un filtro WordPress per realizzare questa stregoneria. 

In poche parole, il codice controlla un utente, e se è un utente amministratore viene indirizzato al posto predefinito, altrimenti viene reindirizzato al il mio account pagina. Tutto ciò viene attivato quando l'utente accede utilizzando il filtro login_redirect. 

ruoli) && is_array ($ user-> ruoli)) // controlla gli amministratori se (in_array ('administrator', $ user-> ruoli)) // li reindirizza al posto predefinito return $ redirect_to;  else return home_url ('profile');  else return $ redirect_to;  add_filter ('login_redirect', 'tutsplus_redirect_on_login', 10, 3);

Una nota rapida sulle e-mail in uscita

Quando gli utenti si registrano sul tuo sito, riceveranno e-mail di conferma. Inoltre, se un utente dimentica la sua password, ha la possibilità di recuperarla tramite e-mail. Quindi è importante che diamo a queste e-mail un po 'di affetto e attenzione se vogliamo che il nostro sito di appartenenza sia tutto questo. 

Ora ci sono alcuni modi per farlo. Per tutti i puristi, puoi utilizzare i filtri WordPress per modificare il tipo di contenuto e lo stile delle e-mail, vedere il codice WordPress. In alternativa c'è una serie di plugin là fuori progettati per questo scopo. 

Personalmente mi piace usare Mandrill di MailChimp per inviare email dai miei siti WordPress. Non è troppo complicato da configurare ed è pieno di funzionalità, una delle quali è la possibilità di applicare modelli / stili alle e-mail in uscita. 

Qual'è il prossimo?

Nella prossima e ultima parte della serie creeremo una sezione di account di base in cui gli utenti che hanno effettuato l'accesso potranno modificare i loro dettagli. Vogliamo anche che gli amministratori siano in grado di modificare questi dettagli dall'area di amministrazione di WP, quindi aggiungeremo alcuni campi personalizzati anche lì.

Se avete suggerimenti o domande per favore lasciate un commento. Farò del mio meglio per rispondere in modo tempestivo. 

Cose da notare

Nota: se stai scaricando il codice dal repository GitHub che include tutti i file per far funzionare il tema. L'idea è che puoi prendere il repository ed eseguire i comandi Gulp e Bower necessari e sarai via! Se si desidera solo i file che contengono codice specifico per questa serie, i file sono elencati di seguito. 

  • Tutti i file nella directory di amministrazione  
  • lib / admin.php 
  • lib / membership.php
  • template-user-profile.php
  • templates / header.php