Ditt första WordPress-plugin Enkel optimering

WordPress är den största bloggplattformen som finns tillgänglig på internet idag; och med den officiella versionen av version tre precis runt hörnet kommer den bara att bli större. Som sådan, under de närmaste självständiga tangenterna, kommer vi att lära känna insatserna av WordPress plugin-utveckling, med början av skapandet av vårt första enkla plugin, "Simple Optimization."


Steg 0 Innan vi börjar

Denna handledning kommer att anta att du minst har en nybörjare förståelse av PHP och WordPress-syntaxen. Även om vi täcker allt, kommer en del kunskaper i förväg att hjälpa dig att förstå koncepten mycket lättare. Jag antar också att du har en WP-blogginställning och redo att gå.


Steg 1. Vad vårt plugin gör

Det allra första steget när du skriver ett WP-plugin är att bestämma allt du vill att den ska göra. Eftersom detta är vår första plugin, kommer vi inte göra något för drastiskt. Låt oss skapa något som kommer att påskynda vår blogg; våra sidor kommer att göra snabbare, och vi gör också lite SEO för att förbättra vår sökrankning och hittabarhet.

"Skapa alltid en lista över vad du vill att plugin ska göra innan du skriver någon kod!"

Ta bort värdelösa metataggar:

  • "Rsd_link" - Verkligen enkel Discovery Link
  • "wlwmanifest_link"- Windows Live Writer-länk
  • "Wp_generator" - WordPress versionsnummer

Ta bort onödiga filter:

  • "Wptexturize" - Curly citat
  • "wp_filter_kses" - HTML i användarprofiler

SEO:

  • Lägg in postlistor i som nyckelord
  • Sätt in utdrag i som beskrivning

Steg 2. Lägga grunden

För att starta, navigera till din plugin-mapp ("/ wp-content / plugins /") och skapa en ny mapp. Vi kallar vår "enkla optimering". Nästa inuti den här mappen kommer vi att behöva skapa två filer. Den första kommer att vara den faktiska pluginfilen (namngiven "Main.php"), och den andra kommer att vara obligatorisk README ("Readme.txt"). Vi kommer att lämna readme.txt tom för tillfället; så öppna main.php i din föredragna textredigerare och kopiera i koden nedan.

 

Den här texten är det minimala benet som krävs för att ett plugin ska visas i WordPress-plugin-katalogen. Du behöver självklart fylla varje del som du tycker är lämplig.


Steg 3. Lägga till funktioner

De två första funktionerna vi ska genomföra kommer också att vara det enklaste. Som standard lägger WordPress flera metataggar till i del av din blogg, men det enkla faktumet är att dessa metataggar har absolut inget värde alls. så vi kommer helt enkelt att stoppa WordPress från att lägga till dem. När som helst WordPress utför en åtgärd kallas det antingen a filtrera eller en verkan, och vi kan antingen ta bort eller manipulera dessa filter och åtgärder (du kan hitta en lista över alla filter här och alla åtgärder här). I det här fallet vill vi ta bort de olika åtgärderna som lägger till de metataggarna.

För att göra så använder vi en mycket enkel funktion som heter "Remove_action ( 'åtgärder', 'funktion')". Den här funktionen tar bort funktionen deklarerad i den andra parametern från åtgärden, den första parametern.

 // Rengör wp_head // Ta bort Verkligen enkel upptäckt länk remove_action ('wp_head', 'rsd_link'); // Ta bort Windows Live Writer-länken remove_action ('wp_head', 'wlwmanifest_link'); // Ta bort versionsnumret remove_action ('wp_head', 'wp_generator');

Samma sak gäller samma princip gäller för de två filtren vi ska ta bort:

 // Ta bort lockiga citat remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // Tillåt HTML i användarprofiler remove_filter ('pre_user_description', 'wp_filter_kses');

Steg 4. SEO

Nu när vi har klippt ut det här, låt oss se till att vår blogg har några grundläggande SEO; Det betyder att vi ska se till att vi har nyckelord per sida, som motsvarar den sidan och ändrar beskrivningen för att matcha mer med artikeln. För våra nyckelord kommer vi att ta taggarna för den aktuella sidan / inlägget. Detta görs super enkelt av funktionen "wp_get_post_tags ()". wp_get_post_tags kommer att returnera en rad taggar från det aktuella inlägget. Vi kan då enkelt formatera denna array i en sträng och placera den inom vår rubrik (inuti funktionen "Wp_head ()", att alla teman borde ha det redan) genom att fästa vår funktion till wp_head-åtgärden.

Låt oss börja med att skapa en ny funktion, tags_to_keywords (), och inuti denna funktion skriver vi en enkel om uttalande, som kontrollerar om den aktuella sidan är en enda post eller sida (med WP-funktionerna: is_single () och is_page ()). Därefter skapar vi en variabel inuti detta om uttalande, namngivet $ tags, och ställa in innehållet till funktionen wp_get_post_tags (); För att denna funktion ska kunna fungera måste vi dock passera i en parameter av "post_id". Det enklaste sättet för oss att få det är att globalisera WP-variabeln $ post som innehåller post-id ($ Post-> ID, $ post är ett objekt som är anledningen till att vi ringer till sina värden som det).

 // SEO // lägg till taggar som nyckelord funktion tags_to_keywords () global $ post; om (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); 

Därefter använder vi a för varje att filtrera genom $ taggar data och skapa en ny array med endast den information vi vill ha ($ tag_array). Därefter imploderar vi matrisen i en sträng och skiljer varje objekt från matrisen med ett komma och utrymme ($ tag_string). Därefter kommer vi att skapa ett annat om uttalande som kontrollerar för att se om $ tag_string har ett värde (vilket betyder att vi har några taggar för inlägget) och om det gör, echo ut den slutliga HTML.

 funktionen tags_to_keywords () global $ post; om (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tags as $ tag) $ tag_array [] = $ tag-> namn;  $ tag_string = implode (',', $ tag_array); om ($ tag_string! == ") echo"\ r \ n "; 

Det sista vi behöver göra nu är att bifoga vår nya funktion med wp_head-åtgärden. För att göra detta ska vi ringa add_action ( 'åtgärder', 'funktion'), och skicka parametrarna "wp_head" och "tags_to_keywords" (i den ordningen).

 add_action ( 'wp_head', 'tags_to_keywords'); 

För att ytterligare öka vår SEO, kommer vi att lägga till vår beskrivning metadata i rubriken också med samma metod som nyckelorden. När vi har omskrivningen om omskrivit, kommer vi att skapa en ny variabel $ all_post_content och fyll det med WP-funktionen wp_get_single_post () (och skicka parametern för $ post-> ID). Detta ger oss ett objekt som är fullt av alla uppgifter om vårt inlägg. Med denna variabel kan vi skapa en beskrivning med det faktiska innehållet i inlägget, men vi kommer att förkorta det till ett hundra tecken med funktionen substr ($ Utdrag). Och då ska vi bara echo HTML-filen med det utdrag som skrivits in. (Alternativt kan du också lägga till en annan uttalande och echo din bloggbeskrivning med funktionen get_bloginfo ( 'beskrivning').)

 // lägg till utom som beskrivning funktion excerpt_to_description () global $ post; om (is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] '; eko "\ r \ n "; annat echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');

Steg 5. Optimera databasen

Den sista funktionen för vårt plugin kommer att optimera våra databastabeller genom att ta bort överliggande (användlösa / överflödiga data i en SQL-tabell skapad genom att manipulera databasen). För att börja skapa vi en ny funktion (optimize_database), och inuti det kommer vi att ringa den globala WPDB-variabeln ($ wpdb). På det sättet kan vi interagera med databasen utan att behöva skriva in vår autentiseringsinformation. $ wpdb har flera metoder du kan använda för att interagera med och hämta information från databasen (Hela listan här), men vi ska bara använda en, get_results. Med hjälp av get_results med parametrarna "SHOW TABLES" och "ARRAY_A" kommer vi tillbaka till en associativ grupp av alla tabellnamnen i databasen. På den tiden kan vi använda en sträcka för att slinga igenom var och en av matrisvärdena (med array_values för att få tabellnamnet på grund av hur det lagras av funktionen) och använd en annan $ wpdb-metod, fråga om att köra optimera kommandot ("OPTIMERA TABELL _____").

 // Optimera databasfunktionen optimize_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); foreach ($ all_tables som $ tabeller) $ tabell = array_values ​​($ tabeller); $ wpdb-> fråga ("OPTIMERA TABELL". $ tabell [0]);  

Medan den här funktionen fungerar, kommer den aldrig att köras eftersom WordPress inte har något att veta för att köra det. Lyckligtvis har WordPress en funktion som heter cron, vilka scheman fungerar för att köra med specifika intervaller (dagligen, veckovis, etc ...); Det här är perfekt för oss, eftersom vi ofta vill optimera vår databas. För att använda Cron ska vi skapa en ny funktion (simple_optimization_cron_on) och fyll i det med ett annat funktionsanrop till wp_schedule_event (). För att fungera behöver wp_schedule_event tre saker: en tid att springa, ett intervall mellan varje körning och en funktion att ringa; så vi kommer att skicka det parametrarna: "time ()" (vi antar att närhelst cron-händelsen skapas är det bra att ringa funktionen), "daily", "optimize_database" i den ordningen.

 funktion simple_optimization_cron_on () wp_schedule_event (tid (), 'dagligen', 'optimize_database');  

Bra, nu har vi vårt optimize_database funktion läggs till i WP cron listan, eller vi skulle om vi skulle ringa simple_optimization_cron_on fungera. Det är verkligen osäkert och det är en dålig övning att ringa dina egna händelsetilläggsfunktioner, eftersom det genom en del godtyckliga system av händelser kan leda till att funktionen kallas flera gånger. WordPress råkar ha en uppsättning specifika krokar för plugins för att lösa detta problem: register_activation_hook och register_deactivation_hook. Dessa funktioner kallas när en plugin är påslagen (aktiverad) och avstängd (avaktiverad). På så sätt kan vår cron-funktion bara läggas till en gång. Nu har vi möjlighet att ta bort cron-händelsen om plugin slutar användas. För att fungera behöver dessa funktioner två delar av informationen: URL-filen som har aktiverings- och deaktiveringsfunktionerna (99% av tiden "__FILE__" fungerar perfekt här) och namnet på aktiverings- och deaktiveringsfunktionen. Vi skapar också en ny funktion (simple_optimization_cron_off) och fyll i det med ett samtal till en annan funktion (wp_clear_scheduled_hook ('optimize_database')) för att radera vår cron-händelse.

 funktion simple_optimization_cron_off () wp_clear_scheduled_hook ('optimize_database');  register_activation_hook (__ FIL __, 'simple_optimization_cron_on'); register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off'); 

Steg 6. Fylla på ReadMe

Det sista vi behöver göra för vårt nya plugin fyller i filen readme.txt. Readme.txt-filen används av WordPress Plugin-katalogen för att visa all information du tillhandahåller om ditt plugin. Det bästa sättet att lära sig att skriva en effektiv readme.txt-fil är att ladda ner standard från WP, och ändra det i enlighet med ditt plugin. Eftersom vårt var så förenklat, så var det jag personligen hamnade med:

 === Enkel optimering === Bidragsgivare: Jonathan Wolfe Plugin länk: http://net.tutsplus.com/ Tags: enkel, optimering, nyckelord, taggar, beskrivning, SEO, optimera, databas Kräver åtminstone: 2.5.1 Testad upp till: 2.9.2 Stabil tag: trunk Stiligt lägger till flera optimeringsfunktioner till WordPress back-end för att göra din blogg eller webbplats köra snabbare. == Beskrivning == Enkel optimering lägger till flera funktioner för WordPress som hjälper till att trimma fettet från systemet och också städa upp efter sig lite, vilket leder till en snabbare laddningstid för din blogg eller hemsida. ** Funktioner ** _Remove värdelösa metataggar: _ * "rsd_link" - Really Simple Discovery Link * "wlwmanifest_link" - Windows Live Writer-länk * "wp_generator" - WordPress versionsnummer _Remove användbara filter: _ * "wptexturize" - currly citat * "wp_filter_kses" - HTML i användarprofiler _SEO: _ * Lägg in posttag i  som nyckelord _ Optimera databasen == Installation == 1. Hämta, plocka upp och ladda upp till din WordPress-plugins-katalog 2. aktivera plugin-programmet i WordPress Administration 

Det är allt!

Du har bara skrivit ditt första WordPress-plugin, vilket fungerar och är klart för WP Plugins Directory. Längs vägen lärde du dig om filter och handlingar, använder WP-globala objekt, mycket om WordPress-nomencalturen, hur man interagerar med databasen, cron-händelser och aktivering / avaktiveringskrokar. Om du har några frågor, vänligen lämna en kommentar och jag svarar så snart jag kan.

Slutkoden:

 ID); // få postkodor föreach ($ taggar som $ tagg) // loop genom varje tagg $ tag_array [] = $ tag-> namn; // skapa en ny array med endast taggnamn $ tag_string = implode (',', $ tag_array); // konvertera array till kommaseparerad sträng om ($ tag_string! == ") // det vi har taggar echo"\ r \ n "; // lägg till metataggen till   add_action ('wp_head', 'tags_to_keywords'); // Lägg till tags_to_keywords till wp_head funktion // lägg till utom som beskrivning funktion excerpt_to_description () global $ post; // få tillgång till $ postobjektet om (is_single () || is_page ()) // bara kör på inlägg eller sidor $ all_post_content = wp_get_single_post ($ post-> ID); // få allt innehåll från posten / sidan $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] '; // få först 100 tecken och lägg till "[...]" till slutet echo "\ r \ n "; // lägg till metataggen till   annars // kör bara om inte ett inlägg eller e-postsida "\ r \ n "; // lägg till metataggen till   add_action ('wp_head', 'excerpt_to_description'); // lägg till excerpt_to_description till wp_head-funktionen // Optimera databasfunktionen optimize_database () global $ wpdb; // få tillgång till $ wpdb-objekt $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); // få alla tabellnamn föreach ($ all_tables som $ bord) // gå igenom varje tabellnamn $ table = array_values ​​($ tables); // få tabellnamnet ur array $ wpdb-> query ("OPTIMIZE TABLE". $ tabell [0]); // kör optimera SQL-kommandot på bordet funktion simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimize_database'); // rdd optimize_database till wp cron events funktion simple_optimization_cron_off () wp_clear_scheduled_hook ('optimize_database'); // ta bort optimize_database från wp cron händelser register_activation_hook (__ FIL __, 'simple_optimization_cron_on'); // kör simple_optimization_cron_on vid plugin activation register_deactivation_hook (__ FIL __, 'simple_optimization_cron_off'); // köra simple_optimization_cron_off vid instängning av insticksprogram?>