WordPress is een geweldig platform voor meerdere doeleinden. Je kunt veel websites maken met veel verschillende doeleinden: een bedrijfswebsite, een fotodisplay, een nieuwsportaal, een restaurantwebsite met interactieve menu's ... Oh, en blogs natuurlijk. Je kunt bloggen met WordPress. Vergat dat.
Vreemd genoeg hebben non-profit organisaties de neiging om deze flexibiliteit over het hoofd te zien en hiervan te profiteren. In deze zelfstudie laten we zien hoe u een eenvoudig petitiescript kunt maken om te laten zien hoe een organisatie kan profiteren van WordPress.
Ik ben een grote fan van shortcodes (zoals je kunt zien in mijn vorige berichten), dus we gaan een aantal shortcodes maken en een aantal handige functies om de shortcodes te gebruiken. We gaan deze allemaal samenbrengen in een bestand met de naam petition.php en gebruik het als een WordPress plug-in.
Omdat we ze binnen onze shortcodes gaan gebruiken, dacht ik dat het beter zou zijn om ze eerst te maken en uit te leggen.
Als u PHP5 op uw server gebruikt, gaan we de ingebouwde validators voor e-mail gebruiken voor onze functie:
// e-mailadres valideren functie functie validate_email ($ email) if ($ email == ") return false; else return filter_var ($ email, FILTER_VALIDATE_EMAIL);
En als u iets ouds gebruikt zoals PHP4, kunt u een andere functie gebruiken die gebruikmaakt van reguliere expressies:
// e-mailadres validatie functie functie 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 leeg ($ eregi)? waar onwaar;
Houd er rekening mee dat: Je kunt niet allebei gebruiken!
We zouden een andere databasetabel kunnen maken en gebruiken om de inzendingen van de petities te bevatten, maar ik denk niet dat dit een goede gewoonte is. En hey, wat is er mis met aangepaste velden?
// stuur de ondertekenaar een meta-sleutel 'petition_submission' naar de postfunctie-inzending ($ 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); geef waar terug;
Zoals je uit de code kunt lezen;
name $
, $ e-mail
en $ date
variabelen in de functie (van de shortcode die we in een minuut krijgen)'Petition_submission'
Eenvoudig, toch? Nu kunnen we bij de best moeilijk een deel.
We kunnen de inzendingen nu opslaan, maar hoe krijgen we ze en doen we dingen met hen? Hier is hoe:
// haal de inzendingen op van de functie 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);
Weet je nog dat ik zei dat het zo zal zijn best moeilijk? Ik loog:
petition_submission
'sleutel tot een arrayvariabele$ number
(Standaard 5) van inzendingen vanaf het einde van de array (let op de -1)We zullen enkele CSS-kiezers in de code gebruiken, dus zet ze in uw style.css bestand van uw thema:
#petition_form #petition_form label font-weight: bold; lettertype: groter; regelhoogte: 150%; #petition_form input display: block; marge: 5px 0; opvulling: 3px; #petition_name width: 200px; #petition_email width: 200px; #petition_submit padding: 5px; .petition_success color: # 693; .petition_error color: # A00; .petition_list lijststijl: geen; marge: 0; opvulling: 0; .petition_list li background-image: none! important; .petition_list span display: inline-block; breedte: 45%; opvulling: 1%; marge: 1%; achtergrondkleur: #FAFAFA; .submission_name .submission_date font-style: italic; kleur: # 888;
Voel je vrij om de standaardwaarden van de eigenschappen te bewerken :)
We hebben de helperfuncties en de CSS-code voltooid. Laten we nu naar het leuke gedeelte gaan - de shortcodes!
We zouden kunnen doen met slechts één grote shortcode om het formulier bij te voegen, de inzendingen te vermelden en het aantal inzendingen te tonen, maar ... waarom al het plezier doden? Bovendien zouden afzonderlijke shortcodes voor deze drie elementen ons bevrijden om ze te gebruiken waar we maar willen in onze inhoud.
Heb ik je verteld hoe ik liefde shortcodes?
Deze functie is lang, dus ik ga de code uitleggen in de code, met PHP opmerkingen:
function petition_form_sc ($ atts) // extract the shortcode parameters extract (shortcode_atts (array (// de tekstwaarde van de verzendknop 'submit' => 'Submit', // de tekst voor het foutbericht 'error' => 'Uw e-mailadres is niet geldig. Voer het formulier opnieuw in met een geldige naam en e-mailadres.', // de tekst wanneer de inzending succesvol is 'succes' => 'Uw inzending is opgeslagen. u! '), $ atts)); // de HTML-elementen van ons verzoekformulier $ form = ''; // als het formulier "POST" is ed ... if ($ _SERVER ['REQUEST_METHOD'] == 'POST') // ... de naam krijgen ... $ name = $ _POST ['petition_name']; // ... en het e-mailadres ... $ email = $ _POST ['petition_email']; // ... en de datum van "zojuist", met het datumnotatie van uw WP-opties. $ date = date (get_option ('date_format')); // valideer eerst het e-mailadres! if (validate_email ($ email) == true) // het e-mailadres is geldig! onthoud de onderstaande functie? inzending ($ naam, $ e-mail, $ datum); // we hebben de variabelen verzonden met de functie submission (), nu drukken we het succesbericht ZONDER HET FORMULIER: return '
Ik probeerde zo duidelijk mogelijk te zijn, maar als je gelooft dat ik iets heb weggelaten, vraag het me dan gerust door te reageren op dit bericht!
Het gedeelte "laatste invoer" is het bewijs dat mensen zich aansluiten bij jouw zaak, dus we moeten op zijn minst een aantal inzendingen vermelden.
Dit is ook geen korte functie, dus ik zal de code nogmaals met opmerkingen toelichten:
function petition_list_sc ($ atts) // extraheer de shortcode parameters extract (shortcode_atts (array (// we zouden een standaard nummer kunnen instellen maar onthoud dat we dat al deden in de get_the_submissions () functie :) 'number' => "), $ atts)); // krijg de $ nummer meest recente inzendingen ... $ submissions = get_the_submissions ($ number); // ... en list 'em! $ output ='
Nogmaals, voel je vrij om alles te vragen wat je wilt vragen door op deze post te reageren.
Dit is echt een kleine functie, alleen om te zien hoeveel inzendingen worden verzonden:
function petition_count_sc () $ petition_meta = get_post_custom_values ('petition_submission'); return count ($ petition_meta); add_shortcode ('petition_count', 'petition_count_sc');
Zoals je ziet, gooit het gewoon de aangepaste velden naar een array en telt het en retourneert het nummer.
Ik moet benadrukken dat dit een heel eenvoudig voorbeeld is om te laten zien dat organisaties kunnen profiteren van WordPress door scripts als deze te gebruiken. Als u een verbetering voor dit script (of zelfstudie) kunt bedenken, deel uw mening dan in de onderstaande opmerkingen. Bedankt voor het lezen!