Uw eerste WordPress-plug-in eenvoudige optimalisatie

WordPress is het grootste blogplatform dat vandaag op internet beschikbaar is; en met de officiële release van versie drie om de hoek, wordt het alleen maar groter. Als dusdanig zullen we in de volgende paar op zichzelf staande tuts de ins en outs leren van de ontwikkeling van WordPress-plug-ins, te beginnen met de creatie van onze eerste eenvoudige plug-in "Simple Optimization".


Stap 0 Voordat we beginnen

Deze tutorial gaat ervan uit dat je op zijn minst een beginnend begrip hebt van PHP en de WordPress syntaxis. Hoewel we alles zullen behandelen, zal enige kennis vooraf je helpen de concepten veel gemakkelijker te begrijpen. Ik ga er ook van uit dat je een WP-blog hebt ingesteld en klaar bent om te gaan.


Stap 1. Wat onze plug-in doet

De allereerste stap, bij het schrijven van een WP-plug-in, is om alles te bepalen wat u wilt. Omdat dit onze eerste plug-in is, zullen we niets te drastisch doen. Laten we iets maken dat ons blog zal versnellen; onze pagina's worden sneller weergegeven en we zullen ook een beetje SEO doen om onze zoekrang en vindbaarheid te verbeteren.

"Maak altijd een lijst van wat u wilt dat uw plug-in doet voordat u een code schrijft!"

Verwijder nutteloze metatags:

  • "Rsd_link" - Really Simple Discovery Link
  • "wlwmanifest_link"- Windows Live Writer-koppeling
  • "Wp_generator" - WordPress versienummer

Verwijder onnodige filters:

  • "Wptexturize" - Curly citaten
  • "Wp_filter_kses" - HTML in gebruikersprofielen

SEO:

  • Voeg postlabels in als sleutelwoorden
  • Voeg postuittreksel in in als beschrijving

Stap 2. Het grondwerk leggen

Ga om te beginnen naar de map met plug-ins ("/ wp-content / plugins /") en maak een nieuwe map. We zullen de onze 'eenvoudige optimalisatie' noemen. Vervolgens moeten we binnen deze map twee bestanden maken. De eerste zal het eigenlijke plugin-bestand zijn (genaamd "Main.php"), en de tweede is de verplichte README ("Readme.txt"). We gaan readme.txt voorlopig leeg laten; open main.php dus in uw gewenste teksteditor en kopieer de code hieronder.

 

Deze tekst is het minimale minimum dat nodig is om een ​​plug-in in de WordPress plugin-directory te laten verschijnen. Je zult natuurlijk elk onderdeel moeten vullen zoals je wilt.


Stap 3. Functies toevoegen

De eerste twee functies die we gaan implementeren, zijn ook de eenvoudigste. WordPress voegt standaard verschillende metatags toe aan de deel van je blog, maar het simpele feit is dat deze meta-tags absoluut geen enkele waarde hebben; dus we gaan gewoon stoppen met WordPress door ze toe te voegen. Telkens wanneer WordPress een actie uitvoert, wordt deze ofwel a genoemd filter of een actie, en we kunnen deze filters en acties verwijderen of manipuleren (u kunt hier een lijst met alle filters en alle acties hier vinden). In dit geval willen we de verschillende acties verwijderen die die metatags toevoegen.

Om dit te doen, gebruiken we een heel eenvoudige functie genaamd "Remove_action ( 'action', 'functie')". Deze functie verwijdert de functie die is gedeclareerd in de tweede parameter uit de actie, de eerste parameter.

 // Clean up wp_head // Verwijderen Echt eenvoudige detectielink remove_action ('wp_head', 'rsd_link'); // Verwijder de koppeling Windows Live Writer remove_action ('wp_head', 'wlwmanifest_link'); // Verwijder het versienummer remove_action ('wp_head', 'wp_generator');

Hetzelfde exact dezelfde principe is van toepassing op de twee filters die we gaan verwijderen:

 // Verwijder gekrulde aanhalingstekens remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // HTML toestaan ​​in gebruikersprofielen remove_filter ('pre_user_description', 'wp_filter_kses');

Stap 4. SEO

Nu dat we die bloat hebben weggesneden, laten we ervoor zorgen dat onze blog wat basis-SEO heeft; wat inhoudt, laten we ervoor zorgen dat we zoekwoorden per pagina hebben die overeenkomen met die pagina en de beschrijving wijzigen zodat deze meer overeenkomt met het artikel. Voor onze zoekwoorden gaan we de tags van de huidige pagina / post pakken. Dit wordt supereenvoudig gemaakt door de functie "Wp_get_post_tags ()". wp_get_post_tags retourneert een reeks tags van het huidige bericht. We kunnen deze array vervolgens eenvoudig in een string opmaken en in onze header plaatsen (binnen de functie "Wp_head ()", dat elk thema er al in zou moeten staan) door onze functie aan de actie wp_head te koppelen.

Laten we beginnen met het maken van een nieuwe functie, tags_to_keywords (), en, binnen deze functie, zullen we een simpele schrijven als verklaring, die controleert of de huidige pagina één bericht of pagina is (met behulp van de WP-functies: is_single () en is_page ()). Vervolgens maken we een variabele binnen deze if-instructie, genaamd $ labels, en stel de inhoud ervan in op de functie wp_get_post_tags (); Om deze functie te laten werken, moeten we echter een parameter van 'post_id' doorgeven. De gemakkelijkste manier om dit te verkrijgen is om de WP-variabele te globaliseren $ bericht die het bericht-ID bevat ($ Post-> ID, $ post is een object en daarom roepen we zijn waarden als zo op).

 // SEO // tags toevoegen als sleutelwoorden function tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); 

Vervolgens gebruiken we een foreach om de gegevens van $ tags te filteren en een nieuwe array te maken met alleen de informatie die we willen hebben ($ tag_array). Hierna imploderen we de array in een string en scheiden elk item uit de array met een komma en spatie ($ tag_string). Vervolgens maken we een nieuwe if-instructie die controleert of $ tag_string een waarde heeft (oftewel, hebben we tags voor de post) en zo ja, sluit dan de laatste HTML uit.

 function tags_to_keywords () global $ post; if (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tags als $ tag) $ tag_array [] = $ tag-> naam;  $ tag_string = imploderen (',', $ tag_array); if ($ tag_string! == ") echo"\ r \ n "; 

Het laatste wat we nu moeten doen, is onze nieuwe functie verbinden met de actie wp_head. Om dit te doen, gaan we bellen add_action ( 'actie', 'functie'), en geef het de parameters "wp_head" en "tags_to_keywords" door (in die volgorde).

 add_action (wp_head ',' tags_to_keywords); 

Om onze SEO verder te vergroten, voegen we onze metagegevens van de beschrijving ook toe aan de header, op dezelfde manier als de zoekwoorden. Zodra we de if-instructie herschreven hebben, gaan we een nieuwe variabele maken $ all_post_content en vul het met behulp van de WP-functie wp_get_single_post () (en geef de parameter $ post-> ID door). Dit geeft ons een object vol met alle gegevens over onze post. Met deze variabele kunnen we een beschrijving maken met behulp van de daadwerkelijke inhoud van de post, maar we gaan deze beperken tot honderd tekens met behulp van de functie substr ($ Uittreksel). En dan herhalen we gewoon de HTML met het fragment erin geschreven. (Eventueel kunt u ook een anders verklaring en echo uw blogbeschrijving met behulp van de functie get_bloginfo ( 'beschrijving').)

 // add behalve als beschrijving function excerpt_to_description () global $ post; if (is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] '; echo "\ r \ n "; else echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');

Stap 5. Optimalisatie van de database

De laatste functie voor onze plug-in gaat onze databasetabellen optimaliseren door overhead (nutteloze / overtollige gegevens in een SQL-tabel gemaakt door het manipuleren van de database) te verwijderen. Om te beginnen maken we een nieuwe functie (optimize_database), en daarbinnen gaan we de globale WPDB-variabele noemen ($ wpdb). Op die manier kunnen we communiceren met de database zonder onze authenticatiegegevens opnieuw in te voeren. $ wpdb heeft verschillende methoden die u kunt gebruiken om te communiceren met en informatie op te halen uit de database (Volledige lijst hier), maar we zullen er slechts één gebruiken, get_results. Het gebruik van get_results met de parameters "TABELLEN WEERGEVEN" en "ARRAY_A" retourneert een associatieve array van alle tabelnamen in de database. Op dat moment kunnen we een foreach gebruiken om door elk van de arraywaarden te lopen (met array_values om de tabelnaam te krijgen, vanwege de manier waarop deze is gelaagd door de functie) en een andere $ wpdb-methode te gebruiken, voert u een query uit om het optimalisatiecommando uit te voeren ("TIJD OPTIM. _____").

 // Optimize Database function Optimize_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('TOON TABELLEN', ARRAY_A); foreach ($ all_tables als $ tabellen) $ table = array_values ​​($ tabellen); $ wpdb-> query ("TABEL OPTIMALISEREN". $ tabel [0]);  

Hoewel deze functie werkt, wordt deze nooit echt uitgevoerd omdat WordPress op geen enkele manier weet hoe deze moet worden uitgevoerd. Gelukkig heeft WordPress een functie met de naam cron, waarmee functies worden gepland om te worden uitgevoerd met specifieke intervallen (dagelijks, wekelijks, enz ...); dit is perfect voor ons, omdat we onze database regelmatig willen optimaliseren. Om Cron te gebruiken, gaan we een nieuwe functie maken (simple_optimization_cron_on) en vul het met een andere functieaanroep naar wp_schedule_event (). Om te werken heeft wp_schedule_event drie dingen nodig: een uit te voeren tijd, een interval tussen elke run en een functie om te bellen; dus we geven het de parameters door: 'tijd ()' (we nemen aan dat wanneer de cron-gebeurtenis is gemaakt, het een goed moment is om de functie aan te roepen), 'dagelijks', 'optimaliseren_database' in die volgorde.

 function simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'Optimize_database');  

Geweldig, nu hebben we onze optimize_database functie die wordt toegevoegd aan de WP cron-lijst, of we zouden als we de simple_optimization_cron_on functie. Het is echt onveilig en het is een slechte gewoonte om je eigen eventtoevoegingsfuncties aan te roepen, omdat door een willekeurig systeem van gebeurtenissen, de functie meerdere keren kan worden aangeroepen. WordPress heeft toevallig een aantal specifieke hooks voor plug-ins om dit probleem op te lossen: register_activation_hook en register_deactivation_hook. Deze functies worden aangeroepen wanneer een plug-in is ingeschakeld (geactiveerd) en uitgeschakeld (gedeactiveerd). Op deze manier kan onze cron-functie slechts één keer worden toegevoegd. Nu hebben we de mogelijkheid om de cron-gebeurtenis te verwijderen als de plug-in niet meer wordt gebruikt. Om te werken, hebben deze functies twee soorten informatie nodig: de URL naar het bestand met de activerings- en deactiveringsfuncties (99% van de tijd "__FILE__" werkt hier perfect) en de naam van de activerings- en deactiveringsfunctie. We zullen ook een nieuwe functie maken (simple_optimization_cron_off) en vul het met een oproep naar een andere functie (wp_clear_scheduled_hook ('Optimize_database')) om onze cron-gebeurtenis te verwijderen.

 function simple_optimization_cron_off () wp_clear_scheduled_hook ('optimaliseren_database');  register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); register_deactivation_hook (FILE __ __, 'simple_optimization_cron_off); 

Stap 6. De LeesMij vullen

Het laatste dat we moeten doen voor onze nieuwe plug-in is het readme.txt-bestand invullen. Het bestand readme.txt wordt gebruikt door de map WordPress Plugin om alle informatie weer te geven die u aanlevert over uw plug-in. De beste manier om te leren hoe u een effectief leesmij-bestand kunt schrijven, is om de standaard van WP te downloaden en dienovereenkomstig aan te passen aan uw plug-in. Omdat de onze zo simplistisch was, is dit waar ik persoonlijk mee eindigde:

 === Eenvoudige optimalisatie === Medewerkers: Jonathan Wolfe Plugin-link: http://net.tutsplus.com/ Tags: eenvoudig, optimalisatie, trefwoorden, tags, beschrijving, SEO, optimaliseren, database Vereist ten minste: 2.5.1 Getest tot: 2.9.2 Stabiel label: trunk Voegt stilletjes verschillende optimalisatiefuncties toe aan de WordPress-backend om uw blog of site sneller te laten werken. == Beschrijving == Eenvoudige optimalisatie voegt verschillende functies toe aan WordPress die helpen het vet uit het systeem te trimmen en ook na zichzelf een beetje op te ruimen, wat allemaal leidt tot een snellere laadtijd voor uw blog of website. ** Functies ** _ Verwijder nutteloze metatags: _ * "rsd_link" - Really Simple Discovery Link * "wlwmanifest_link" - Windows Live Writer-koppeling * "wp_generator" - WordPress versienummer _Verwijder nutteloze filters: _ * "wptexturize" - currly quotes * "wp_filter_kses" - HTML in gebruikersprofielen _SEO: _ * Voeg posttags in  als sleutelwoorden _Routine optimaliseer de database_ == Installatie == 1. Downloaden, unzippen en uploaden naar uw WordPress plug-ins directory 2. activeer de plug-in in WordPress Administratie 

Dat is het!

U hebt zojuist met succes uw eerste WordPress-plug-in geschreven, die werkt en gereed is voor de WP-directory voor invoegtoepassingen. Onderweg leerde je over filters en acties, met behulp van globale WP-objecten, veel over de WordPress-naamgeving, hoe je interactie hebt met de database, cron-gebeurtenissen en activerings- / deactiveringshaken. Als u vragen heeft, laat dan een reactie achter en ik zal zo snel mogelijk reageren.

De definitieve code:

 ID KAART); // krijg posttags voor elk ($ tags als $ tag) // doorloop elke tag $ tag_array [] = $ tag-> naam; // nieuwe array maken met alleen tagnamen $ tag_string = implode (',', $ tag_array); // converteer array naar comma gescheiden string als ($ tag_string! == ") // het we hebben tags echo"\ r \ n "; // metatag toevoegen aan   add_action ('wp_head', 'tags_to_keywords'); // Add tags_to_keywords to wp_head function // add except as description functie excerpt_to_description () global $ post; // krijg toegang tot het $ post-object if (is_single () || is_page ()) // alleen uitvoeren op berichten of pagina's $ all_post_content = wp_get_single_post ($ post-> ID); // haal alle inhoud uit de post / pagina $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] '; // krijg de eerste 100 tekens en voeg "[...]" toe aan de eindselecho "\ r \ n "; // metatag toevoegen aan   else // alleen uitvoeren als geen bericht of pagina echo is "\ r \ n "; // metatag toevoegen aan   add_action ('wp_head', 'excerpt_to_description'); // add excerpt_to_description to wp_head function // Optimize Database function Optimize_database () global $ wpdb; // krijg toegang tot $ wpdb-object $ all_tables = $ wpdb-> get_results ('TOON TABELLEN', ARRAY_A); // haal alle tabelnamen voor elk ($ all_tables als $ tabellen) // doorloop elke tabelnaam $ table = array_values ​​($ tabellen); // Haal de tabelnaam uit de array $ wpdb-> query ("TABEL OPTIMALISEREN". $ table [0]); // voer de optimaliseren SQL-opdracht op de tabel functie simple_optimization_cron_on () wp_schedule_event (tijd (), 'dagelijks', 'optimaliseren_database'); // rdd optimaliseren_database naar wp cron-gebeurtenissen function simple_optimization_cron_off () wp_clear_scheduled_hook ('optimaliseren_database'); // remove Optimize_database van wp cron-events register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); // voer simple_optimization_cron_on uit bij plugin activation register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off'); // voer simple_optimization_cron_off uit bij plug-in deactivering?>