Creazione di Nifty Petitions all'interno dei tuoi messaggi

WordPress è una grande piattaforma multiuso. Puoi creare molti siti Web con molti scopi diversi: un sito web aziendale, una vetrina fotografica, un portale di notizie, un sito web di ristoranti con menu interattivi ... Oh, e ovviamente i blog. Puoi blog con WordPress. Dimenticato di questo.

Stranamente, le organizzazioni senza scopo di lucro tendono a trascurare questa flessibilità e ad approfittarne. In questo tutorial, mostreremo come creare un semplice script di petizione per dimostrare come un'organizzazione può trarre vantaggio da WordPress.


Cosa stiamo costruendo, esattamente?

Sono un grande fan degli shortcode (come puoi vedere dai miei post precedenti), quindi creeremo una serie di shortcode e alcune utili funzioni per gli shortcode da usare. Stiamo andando a ottenere tutti questi insieme in un file chiamato petition.php e usarlo come plugin per WordPress.


Funzioni di supporto

Dal momento che li useremo all'interno dei nostri shortcode, ho pensato che sarebbe stato meglio crearli e spiegarli prima.

Una semplice funzione di convalida della posta elettronica

Se stai utilizzando PHP5 sul tuo server, utilizzeremo i validatori di e-mail incorporati per la nostra funzione:

 // funzione di convalida dell'indirizzo e-mail validate_email ($ email) if ($ email == ") return false; else return filter_var ($ email, FILTER_VALIDATE_EMAIL);

E se stai usando qualcosa di antico come PHP4, puoi usare una funzione diversa che fa uso di espressioni regolari:

 // funzione di convalida dell'indirizzo e-mail validate_email ($ email) if ($ email == ") return false; else $ eregi = preg_replace ('/([a-z0-9_.-]+)' . '@'. '([a-z0-9 .-] +) 2,255'. '.'. '([az] +) 2,10 / i', ", $ email);  return empty ($ eregi)? vero falso; 

Notare che: Non è possibile utilizzare entrambi!

La funzione per inviare le voci

Potremmo creare e utilizzare una tabella di database diversa per contenere le richieste delle petizioni, ma non penso che sia una buona pratica. E hey, cosa c'è che non va nei campi personalizzati?

 // invia il firmatario con una meta chiave 'petition_submission' alla submission function ($ name, $ email, $ date) global $ post; $ array = array ('name' => $ name, 'email' => $ email, 'date' => $ date); $ petition_meta = serialize ($ array); add_post_meta ($ post-> ID, 'petition_submission', $ petition_meta); ritorna vero; 

Come puoi leggere dal codice;

  • Abbiamo preso il nome $, $ e-mail e $ date variabili nella funzione (dallo shortcode a cui arriveremo in un minuto)
  • Metti insieme le tre variabili creando una matrice e serializzandola
  • E ha salvato i dati come un campo personalizzato chiamato 'Petition_submission'

Semplice, vero? Ora possiamo arrivare al abbastanza difficile parte.

La funzione per recuperare i contributi

Ora possiamo salvare gli invii, ma come li otterremo e faremo cose con loro? Ecco come:

 // recupera gli invii dalla funzione post get_the_submissions ($ number = 5) $ petition_meta = get_post_custom_values ​​('petition_submission'); if ($ petition_meta) $ output = array_slice ($ petition_meta, $ number * -1); return array_reverse ($ output); 

Ricorda quando ho detto che sarà abbastanza difficile? Ho mentito:

  • Abbiamo assegnato i valori dei post metas con 'petition_submission'chiave per una variabile di matrice
  • Quindi abbiamo ottenuto numero di $ (5 per impostazione predefinita) delle presentazioni dalla fine dell'array (nota il -1)
  • E abbiamo restituito il invertito elenco di quell'array affettato per ordinarlo dal più recente al più vecchio

Extra: selettori CSS da utilizzare

Useremo alcuni selettori CSS nel codice, quindi inseriscili nel tuo style.css file del tuo tema:

 #petition_form  Etichetta #petition_form font-weight: bold; dimensione del carattere: più grande; altezza della linea: 150%;  #petition_form input display: block; margine: 5px 0; imbottitura: 3px;  #petition_name width: 200px;  #petition_email width: 200px;  #petition_submit padding: 5px;  .petition_success color: # 693;  .petition_error color: # A00;  .petition_list list-style: none; margine: 0; padding: 0;  .petition_list li background-image: none! important;  .petition_list span display: inline-block; larghezza: 45%; imbottitura: 1%; margine: 1%; background-color: #FAFAFA;  .submission_name  .submission_date font-style: italic; colore: # 888; 

Sentiti libero di modificare i valori predefiniti delle proprietà :)


Shortcodes

Abbiamo completato le funzioni di supporto e il codice CSS. Ora, passiamo alla parte divertente: gli shortcode!

Potremmo fare solo un grande shortcode per allegare il modulo, elencare le voci e mostrare il numero di richieste ma ... perché uccidere tutto il divertimento? Inoltre, gli shortcode separati per questi tre elementi ci libererebbero dall'usarli ovunque desideriamo nel nostro contenuto.

Ti ho detto come amore shortcodes?

Lo shortcode per la forma della petizione

Questa funzione è lunga, quindi spiegherò il codice all'interno del codice, con i commenti PHP:

 function petition_form_sc ($ atts) // estrai i parametri shortcode extract (shortcode_atts (array (// il valore testuale del pulsante submit 'submit' => 'Submit', // il testo per il messaggio di errore 'error' => 'Il tuo indirizzo e-mail non è valido. Reinserire il modulo con un nome e un indirizzo e-mail validi.', // il testo quando l'invio ha esito positivo 'successo' => 'Il tuo invio è stato salvato. tu! '), $ atts)); // gli elementi HTML della nostra petizione form $ form = '
'; // se il modulo è "POST" ed ... if ($ _SERVER ['REQUEST_METHOD'] == 'POST') // ... ottieni il nome ... $ name = $ _POST ['petition_name']; // ... e l'indirizzo e-mail ... $ email = $ _POST ['petition_email']; // ... e la data di "just now", con il formato della data delle tue opzioni di WP. $ date = date (get_option ('date_format')); // prima convalidare l'indirizzo e-mail! if (validate_email ($ email) == true) // l'indirizzo e-mail è valido! ricorda la funzione qui sotto? invio ($ name, $ email, $ date); // abbiamo inviato le variabili con la funzione submission (), ora stampiamo il messaggio di successo WITHOUT THE FORM: return '
'. $ successo. '
'; // (se vuoi che il modulo venga stampato di nuovo dopo la submission, aggiungi semplicemente $ form prima del punto e virgola). else // l'indirizzo e-mail NON è valido! dovremmo stampare il messaggio di errore WITH THE FORM: return '
'. $ errore. '
'. $ Forma; // e se il modulo non è "POST" ed (il che significa che il visitatore ha appena visitato la pagina), mostra solo il modulo! else return $ form; add_shortcode ('petition_form', 'petition_form_sc');

Ho cercato di essere il più chiaro possibile, ma se credi che ho lasciato qualcosa, sentiti libero di chiedermi commentando questo post!

Lo Shortcode per l'elenco di richieste

La parte "ultime voci" è la prova che le persone si uniscono alla tua causa, quindi dobbiamo elencare almeno un certo numero di proposte.

Anche questa non è una funzione breve, quindi spiegherò di nuovo il codice con i commenti:

 function petition_list_sc ($ atts) // estrai i parametri shortcode extract (shortcode_atts (array (// potremmo impostare un numero predefinito ma ricordati, l'abbiamo già fatto nella funzione get_the_submissions () :) 'numero' => "), $ atts)); // ottieni gli ultimi inserimenti $ number ... $ submissions = get_the_submissions ($ number); // ... e list 'em! $ output ='
    '; if ($ submissions) foreach ($ submissions as $ submission) // unserialize the data $ signer = unserialize ($ submission); // unserialize AGAIN dei dati, non so perché ... $ signer = unserialize ($ signer); // potresti voler cambiare questa parte, ma in questo tutorial il formato predefinito ha un bell'aspetto con il CSS. $ output. = '
  • '; $ output. = ''. $ firmatario ['nome']. ''; $ output. = ''. $ firmatario ['data']. ''; $ output. = '
  • '; $ output. = '
'; restituire $ output; add_shortcode ('petition_list', 'petition_list_sc');

Di nuovo, sentiti libero di chiedere tutto ciò che vuoi chiedere commentando questo post.

Lo Shortcode per il conteggio delle petizioni

Questa è una funzione veramente piccola, solo per ottenere il numero di voci inviate:

 function petition_count_sc () $ petition_meta = get_post_custom_values ​​('petition_submission'); conteggio di ritorno ($ petition_meta);  add_shortcode ('petition_count', 'petition_count_sc');

Come puoi vedere, getta semplicemente i campi personalizzati su un array e lo conta e restituisce il numero.


Conclusione

Vorrei sottolineare che questo è un esempio molto semplice per mostrare alle organizzazioni di trarre beneficio da WordPress utilizzando script come questi. Se riesci a pensare ad un miglioramento per questo script (o tutorial), ti preghiamo di condividere i tuoi pensieri nei commenti qui sotto. Grazie per aver letto!