WordPress-felhantering med WP_Error klass II

I den första delen av denna serie om hantering av fel i WordPress med WP_Error klass, vi tittade på en introduktion av PHP-klassen, vi undersökte klassegenskaperna och metoderna och deras roller och funktioner kompletterade med kodexempel.

I den här sista delen av serien kommer vi att bygga ett ganska enkelt kontaktformulär plugin för att visa hur man hanterar fel i pluginutveckling. Kontaktformulärets plugin har kortnummeroch mall taggar stöd så det kan implementeras i inlägg och sidor med hjälp av den tidigare och i ett tema med den senare. 

Kontaktformulär Plugin Development

Kontaktformuläret kommer att bestå av fem formulärfält - fyra inmatning element och a textarea element.

Jag är säker på att du är bekant med alla kontaktformulärfält. Observera att när ett e-postmeddelande skickas via kontaktformuläret bifogas telefonnumret till meddelandet. Detta framgår av skicka brev fungera.

Låt oss börja koda pluginprogrammet. Först pluginrubriken:

Plugin kommer att bestå av fem PHP-funktioner som beskrivs nedan.

  1. contact_html_form () kommer att innehålla HTML-formulärkoden för plugin.
  2. validate_form () hanterar pluginfelet. vi kommer se felhantering med WP_Error i funktion i denna funktion.
  3. skicka brev()hanterar sändningen av e-post.
  4. contact_form_function ()samlar och bearbetar ovanstående funktioner
  5. contact_form_shortcode ()är kortnummer återuppringningsfunktionen.

HTML-formulärkoden för pluginet finns i contact_html_form () funktionen är enligt följande.

funktion contact_html_form () globalt $ namn, $ email, $ phone_number, $ subject, $ message; eko "
';

Nästa är felhanteringsfunktionen validate_form ().

Följande är den begränsning som ska genomföras av plugin som kommer att verkställas av felhantering fungera.

Anteckna det:

  • inget fält bör lämnas tomt
  • Namnfältet måste innehålla ett alfabetiskt tecken
  • e-postmeddelandet ska vara giltigt
  • telefonnumret ska vara numeriskt

De validate_form () funktionen accepterar formulärfälten som argument, så det kan validera formulärdata för fel. Nedan finns koden för den felhanteringsfunktion som verkställer ovanstående plugin-begränsning fullt kommenterad så att du enkelt kan spåra sin kod

funktion validate_form ($ namn, $ email, $ phone_number, $ subject, $ message) // Gör WP_Error-objektet globalt globalt $ form_error; // instansera klassen $ form_error = new WP_Error; // Om något fält är tomt, lägg till felmeddelandet till felobjektet om (tomt ($ namn) || tomt ($ email) || tomt ($ phone_number) || empty ($ subject) || empty ($ meddelande)) $ form_error-> add ('field', 'Inga fält ska lämnas tomma');  // om namnfältet inte är alfabetiskt, lägg till felmeddelandet om (! ctype_alpha ($ name)) $ form_error-> add ('invalid_name', 'Invalid name entered');  // Kontrollera om e-postadressen är giltig om (! Is_email ($ email)) $ form_error-> add ('invalid_email', 'E-post är inte giltig');  // om telefonnumret inte är numeriskt, kasta ett fel om (! is_numeric ($ phone_number)) $ form_error-> add ('phone_number', 'Telefonnummer är inte tal');  // if $ form_error är WordPress Error, loop genom felobjektet // och echo felet om (is_wp_error ($ form_error)) foreach ($ form_error-> get_error_messages () som $ error) echo '
'; eko "FEL: '; echo $ error. '
'; eko "
';

De skicka brev funktion hanterar e-postsändningen.

funktion send_mail ($ namn, $ email, $ phone_number, $ subject, $ message) global $ form_error; // Se till att WP_Error-objektet ($ form_error) innehåller inget fel om (1> count ($ form_error-> get_error_messages ())) // sanitera användarformulärinsats $ name = sanitize_text_field ($ name); $ email = sanitize_email ($ email); $ phone_number = esc_attr ($ phone_number); $ subject = sanitize_text_field ($ subject); $ message = esc_textarea ($ message); // ställa in det variabla argumentet använd av wp_mail $ message. = '\ n Telefonnummer:'. $ PHONE_NUMBER; $ till = '[email protected]'; $ headers = "Från: $ namn <$email>". \ r \ n"; // Om e-post har varit process för att skicka, visa ett succémeddelande om (wp_mail ($ till, $ subject, $ message, $ headers)) echo "Tack för att du kontaktade mig."; 

Låt oss ta en titt på vad som händer i skicka brev fungera.

Först, det $ form_error objektet är gjort globalt så att det kan nås utanför funktionsomfånget. En kontroll görs för att säkerställa $ form_error Objektet innehåller inget felmeddelande. Om det är sant är kontaktformatinsatsen sanerat.

De $ till variabel lagrar e-postadressen meddelandet som skickas via kontaktformuläret kommer att skickas till. I en standard plugin för kontaktformulär ska variabeln innehålla WordPress-administratörs-e-posthämtning från databasen eller från plugin-inställningarna.
Observera hur telefonnumret blir sammanfogat till meddelandet.
Slutligen, den wp_mail funktion skickar posten. 

De contact_form_function () Funktionen behandlar funktionen och fungerar också som plugin template taggen.

funktion contact_form_function () globalt $ namn, $ email, $ phone_number, $ subject, $ message; om (isset ($ _ POST ['send_message'])) // Hämta formdata $ name = $ _POST ['avsändarens namn']; $ email = $ _POST ['sender_email']; $ phone_number = $ _POST ['avsändare_numret']; $ subject = $ _POST ['email_subject']; $ message = $ _POST ['email_message']; // validera användarformuläret input validate_form ($ namn, $ email, $ phone_number, $ subject, $ message); // skicka posten send_mail ($ namn, $ email, $ phone_number, $ subject, $ message);  // visa kontaktformuläret kontakt_html_form (); 

Kom ihåg att kontaktformulärets plugin ska ha kortkodsstöd. Nedan är kortnummeruppringningsfunktionen tillsammans med add_shortcode funktion som registrerar kortnumret.

// Registrera en ny kortnummer: [cf_contact_form] add_shortcode ('cf_contact_form', 'contact_form_shortcode'); // Kortnummer återuppringningsfunktionsfunktion contact_form_shortcode () ob_start (); contact_form_function (); returnera ob_get_clean (); 

Använda pluginprogrammet

Använd kortnumret [Cf_contact_form] att inkludera kontaktformuläret i ett inlägg eller en sida.
Om du vill inkludera kontaktformuläret i ditt tema använder du malltaggen .

Sammanfattning

I den här artikeln tog vi en titt på hur man använder WP_Error klass för att hantera fel i plugins. Jag visade oss också ett praktiskt användningsfall om hur man hanterar fel i plugin med klassen. Du kan hitta pluginfilen som bifogas denna artikel.

Glad kodning!