I den første delen av denne serien om håndtering av feil i WordPress med WP_Error
klasse, vi tok en titt på en introduksjon av PHP-klassen, vi undersøkte klassens egenskaper og metoder og deres roller og funksjoner komplementert med kodeeksempler.
I denne siste delen av serien vil vi bygge en ganske enkel kontaktformularplugin for å demonstrere hvordan du håndterer feil i pluginutvikling. Kontaktskjemaet vil ha kortnummerog mall tag støtte slik at den kan implementeres i innlegg og sider ved hjelp av den tidligere og i et tema ved hjelp av sistnevnte.
Kontaktskjemaet vil bestå av fem skjemafelt - fire inngang
elementer og a textarea
element.
Jeg er sikker på at du er kjent med alle kontaktformularfeltene. Merk at når en epost sendes via kontaktskjemaet, blir telefonnummeret vedlagt meldingen. Dette er tydelig i send_mail
funksjon.
La oss begynne å kodes pluggen. Først pluginoverskriften:
';Pluggen vil bestå av fem PHP-funksjoner som beskrevet nedenfor.
contact_html_form ()
vil inneholde HTML-skjema koden til plugin.validate_form ()
håndterer pluginfeilen. Vi vil se feilhåndtering ved hjelp avWP_Error
i aksjon i denne funksjonen.send_mail ()
håndterer sending av e-post.contact_form_function ()
samler og behandler de ovennevnte funksjonenecontact_form_shortcode ()
er kortnummer tilbakeringingsfunksjonen.HTML-skjemakoden til pluginet finnes i
contact_html_form ()
funksjonen er som følger.funksjon contact_html_form () global $ navn, $ email, $ phone_number, $ subject, $ message; ekko '
Neste er feilhåndteringsfunksjonen validate_form ()
.
Følgende er begrensningen som skal implementeres av plugin som vil bli håndhevet av feilhåndtering funksjon.
Noter det:
De validate_form ()
funksjonen vil akseptere skjemafeltene som det argument, slik at det kan validere skjemadataene for feil. Nedenfor er koden for feilhåndteringsfunksjonen som håndhever pluginbegrensningen ovenfor, kommentert fullt, slik at du enkelt kan spore koden sin
funksjon validate_form ($ navn, $ email, $ phone_number, $ subject, $ message) // Lag WP_Error-objektet globalt globalt $ form_error; // Installer klassen $ form_error = ny WP_Error; // Hvis et felt er tomt, legg til feilmeldingen til feilobjektet hvis (tomt ($ navn) || tomt ($ email) || tomt ($ phone_number) || tomt ($ subject) || tomt ($ melding)) $ form_error-> add ('field', 'Ingen felt skal stå tomt'); // hvis navnefeltet ikke er alfabetisk, legg til feilmeldingen hvis (! ctype_alpha ($ name)) $ form_error-> legg til ('ugyldig navn', 'Ugyldig navn oppgitt'); // Sjekk om e-posten er gyldig hvis (! Is_email ($ email)) $ form_error-> legg til ('invalid_email', 'Email er ikke gyldig'); // hvis telefonnummer ikke er numerisk, kaste en feil hvis (! er_numerisk ($ telefonnummer)) $ form_error-> legg til ('telefonnummer', 'Telefonnummer er ikke tall'); // hvis $ form_error er WordPress Error, loop gjennom feilobjektet // og ekko feilen hvis (is_wp_error ($ form_error)) foreach ($ form_error-> get_error_messages () som $ feil) echo ''; ekko 'FEIL: '; ekko $ feil. '';
'; ekko '
De send_mail
funksjonen håndterer sendingen av e-post.
funksjon send_mail ($ navn, $ email, $ phone_number, $ subject, $ message) global $ form_error; // Sikre at WP_Error-objektet ($ form_error) ikke inneholder noen feil hvis (1> count ($ form_error-> get_error_messages ())) // rens opp brukerformatinngang $ name = sanitize_text_field ($ name); $ email = sanitize_email ($ email); $ phone_number = esc_attr ($ phone_number); $ subject = sanitize_text_field ($ subject); $ message = esc_textarea ($ message); // sett det variable argumentet bruk av wp_mail $ message. = '\ n Telefonnummer:'. $ PHONE_NUMBER; $ til = '[email protected]'; $ headers = "Fra: $ navn <$email>". \ r \ n"; // Hvis e-post har vært prosess for sending, vis en suksessmelding hvis (wp_mail ($ til, $ emne, $ melding, $ overskrifter)) echo "Takk for at du kontakter meg.";
La oss ta en titt på hva som skjer i send_mail
funksjon.
Først $ form_error
objektet blir gjort globalt, slik at det kan nås utenfor funksjonsområdet. En sjekk er gjort for å sikre $ form_error
objektet inneholder ingen feilmelding. Hvis sant er kontaktformularinngangen sanitert.
De $ til
variabel lagrer e-postadressen meldingen som sendes via kontaktskjemaet vil bli sendt til. I et standard plugin for kontaktskjema bør variabelen inneholde WordPress-administratorens e-posthentning fra databasen eller fra plugininnstillingene.
Legg merke til hvordan telefonnummeret blir sammenkalt til meldingen.
Endelig, den wp_mail
funksjonen sender e-posten.
De contact_form_function ()
Funksjonen prosesserer funksjonen og fungerer også som plugin template tag.
funksjon contact_form_function () global $ navn, $ email, $ phone_number, $ subject, $ message; hvis (isset ($ _ POST ['send_message'])) // Hent formdata $ name = $ _POST ['sender_name']; $ email = $ _POST ['sender_email']; $ phone_number = $ _POST ['sender_fonenummer']; $ subject = $ _POST ['email_subject']; $ message = $ _POST ['email_message']; // validere brukerformularinngangen validate_form ($ navn, $ email, $ phone_number, $ subject, $ message); // send posten send_mail ($ navn, $ email, $ phone_number, $ subject, $ message); // vise kontaktskjemaet kontakt_html_form ();
Husk at plugin for kontaktskjema skal ha kortkodesupport. Nedenfor er kortnummer tilbakeringingsfunksjonen sammen med add_shortcode
funksjon som registrerer kortnummeret.
// Registrer en ny snarvei: [cf_contact_form] add_shortcode ('cf_contact_form', 'contact_form_shortcode'); // Kortnummer tilbakeringingsfunksjon funksjon contact_form_shortcode () ob_start (); contact_form_function (); returner ob_get_clean ();
Bruk kortnummeret [Cf_contact_form]
å inkludere kontaktskjemaet i et innlegg eller en side.
For å inkludere kontaktskjemaet i temaet ditt, bruk malltaggen .
I denne artikkelen tok vi en titt på hvordan du bruker WP_Error
klasse for å håndtere feil i plugins. Jeg viste oss også en praktisk brukstilstand om hvordan du håndterer feil i plugin ved hjelp av klassen. Du kan finne pluginfilen som er vedlagt denne artikkelen.
Glad koding!