In het eerste deel van deze serie over het afhandelen van fouten in WordPress met de WP_Error
klas, we hebben een kijkje genomen naar een introductie van de PHP-klasse, we hebben de klasseneigenschappen en -methoden en hun rollen en functies onderzocht, aangevuld met codevoorbeelden.
In dit laatste deel van de serie bouwen we een tamelijk eenvoudige plug-in voor contactformulieren om te laten zien hoe we met fouten in de ontwikkeling van plug-ins moeten omgaan. De plug-in voor het contactformulier heeft een shortcodeen ondersteuning voor sjabloonlabels, zodat deze kan worden geïmplementeerd in berichten en pagina's met behulp van de eerstgenoemde en in een thema met behulp van de laatste.
Het contactformulier zal uit vijf formuliervelden bestaan - vier invoer
elementen en een textarea
element.
Ik ben er zeker van dat u bekend bent met het veld van alle contactformulieren. Merk op dat wanneer een e-mail wordt verzonden via het contactformulier, het telefoonnummer aan het bericht wordt toegevoegd. Dit is duidelijk in de Verzend mail
functie.
Laten we beginnen met het coderen van de plug-in. Eerst de plug-in header:
';De plug-in bestaat uit vijf PHP-functies, zoals hieronder wordt beschreven.
contact_html_form ()
bevat de HTML-formuliercode van de plug-in.validate_form ()
handelt de plugin-fout af. we zullen foutafhandeling zien met behulp vanWP_Error
in actie in deze functie.Verzend mail()
verzorgt het verzenden van e-mail.contact_form_function ()
brengt de bovenstaande functies bij elkaar en verwerkt zecontact_form_shortcode ()
is de shortcode-callback-functie.De HTML-formuliercode van de plug-in in
contact_html_form ()
functie is als volgt.function contact_html_form () global $ name, $ email, $ phone_number, $ subject, $ message; echo '
De volgende is de foutafhandelingsfunctie validate_form ()
.
Het volgende is de beperking die moet worden geïmplementeerd door de plug-in die wordt afgedwongen door de foutafhandeling functie.
Let daar op:
De validate_form ()
functie accepteert de formuliervelden als argument, zodat deze de formuliergegevens voor fouten kunnen valideren. Hieronder staat de code voor de foutafhandelingsfunctie die de bovenstaande plugin-beperking afdwingt, volledig becommentarieerd, zodat je eenvoudig zijn code kunt traceren
function validate_form ($ name, $ email, $ phone_number, $ subject, $ message) // Maak het WP_Error-object globaal globaal $ form_error; // instantiate de klasse $ form_error = new WP_Error; // Als een veld leeg is, voegt u het foutbericht toe aan het foutobject als (leeg ($ naam) || leeg ($ e-mail) || leeg ($ telefoonnummer_nummer) || leeg ($ onderwerp) || leeg ($ bericht)) $ form_error-> toevoegen ('veld', 'Geen veld moet leeg blijven'); // als het naamveld niet alfabetisch is, voeg het foutbericht toe als (! ctype_alpha ($ name)) $ form_error-> add ('ongeldige naam', 'Ongeldige naam ingevoerd'); // Controleer of de e-mail geldig is als (! Is_email ($ email)) $ form_error-> add ('invalid_email', 'Email is niet geldig'); // als telefoonnummer niet numeriek is, gooi een fout als (! is_numeric ($ phone_number)) $ form_error-> add ('telefoon_number', 'Phone-number is not numbers'); // if $ form_error is WordPress Error, loop door het error object // en echo de fout if (is_wp_error ($ form_error)) foreach ($ form_error-> get_error_messages () als $ fout) echo ''; echo 'FOUT: '; echo $ fout. '';
'; echo '
De Verzend mail
functie zorgt voor de e-mailverzending.
functie send_mail ($ name, $ email, $ phone_number, $ subject, $ message) global $ form_error; // Zorg ervoor dat het WP_Error-object ($ form_error) geen fouten bevat als (1> count ($ form_error-> get_error_messages ())) // de gebruikersformulierinvoer opschonen $ name = sanitize_text_field ($ name); $ email = sanitize_email ($ email); $ phone_number = esc_attr ($ phone_number); $ subject = sanitize_text_field ($ subject); $ message = esc_textarea ($ message); // stel het variabele argument in gebruik door het wp_mail $ bericht. = '\ n Telefoonnummer:'. $ Phone_number; $ to = '[email protected]'; $ headers = "Van: $ naam <$email>"." \ r \ n "; // Als e-mail is verwerkt voor verzending, geeft u een succesbericht weer (wp_mail ($ to, $ subject, $ message, $ headers)) echo" Bedankt dat u contact met me hebt opgenomen. ";
Laten we eens kijken naar wat er gaande is in de Verzend mail
functie.
Eerst de $ form_error
object is globaal gemaakt zodat het buiten de functieruimte kan worden geopend. Er wordt een controle uitgevoerd om de $ form_error
object bevat geen foutmelding. Als dit waar is, wordt de invoer van het contactformulier gezuiverd.
De $ om
variabele slaat het e-mailadres op waarnaar het bericht verzonden via het contactformulier zal worden verzonden. In een standaard plug-in voor contactformulier moet de variabele de e-mail van de WordPress-beheerder bevatten die wordt opgehaald uit de database of uit de plug-ininstellingen.
Noteer hoe het telefoonnummer aan het bericht wordt gekoppeld.
eindelijk, de wp_mail
functie verzendt de e-mail.
De contact_form_function ()
functie verwerkt de functie en dient ook als de tag-tag voor de plug-in.
function contact_form_function () global $ name, $ email, $ phone_number, $ subject, $ message; if (isset ($ _ POST ['send_message'])) // Verkrijg de formuliergegevens $ name = $ _POST ['afzendernaam']; $ email = $ _POST ['sender_email']; $ phone_number = $ _POST ['sender_phonenumber']; $ subject = $ _POST ['email_subject']; $ message = $ _POST ['email_message']; // valideer het gebruikersformulier input validate_form ($ name, $ email, $ phone_number, $ subject, $ message); // verzend de e-mail send_mail ($ naam, $ e-mail, $ telefoonnummer, $ onderwerp, $ bericht); // toon het contactformulier contact_html_form ();
Vergeet niet dat de plug-in voor contact-invoegtoepassingen shortcode-ondersteuning zal hebben. Hieronder vindt u de shortcode call-back functie samen met de add_shortcode
functie die de shortcode registreert.
// Registreer een nieuwe shortcode: [cf_contact_form] add_shortcode ('cf_contact_form', 'contact_form_shortcode'); // Shortcode callback functie functie contact_form_shortcode () ob_start (); contact_form_function (); keer ob_get_clean () terug;
Gebruik de shortcode [Cf_contact_form]
om het contactformulier in een bericht of pagina op te nemen.
Gebruik de sjabloon-tag om het contactformulier in uw thema op te nemen .
In dit artikel hebben we gekeken naar hoe te gebruiken de WP_Error
class om fouten in plug-ins af te handelen. Ik liet ons ook een praktische use-case zien over hoe om te gaan met fouten in plug-ins die de klasse gebruiken. Je vindt het plug-in bestand bij dit artikel.
Happy Coding!