WordPress Feilhåndtering med WP_Error klasse II

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. 

Kontakt-skjema Plugin Development

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.

  1. contact_html_form () vil inneholde HTML-skjema koden til plugin.
  2. validate_form () håndterer pluginfeilen. Vi vil se feilhåndtering ved hjelp av WP_Error i aksjon i denne funksjonen.
  3. send_mail ()håndterer sending av e-post.
  4. contact_form_function ()samler og behandler de ovennevnte funksjonene
  5. contact_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:

  • ingen felt skal stå tomt
  • Navnefeltet må inneholde et alfabetisk tegn
  • e-postadressen skal være gyldig
  • telefonnummeret skal være numerisk

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 av plugin

Bruk kortnummeret [Cf_contact_form] å inkludere kontaktskjemaet i et innlegg eller en side.
For å inkludere kontaktskjemaet i temaet ditt, bruk malltaggen .

Sammendrag

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!