Din første WordPress-plugin Enkel optimalisering

WordPress er den største blogging plattformen tilgjengelig på internett i dag; og med den offisielle utgivelsen av versjon tre rett rundt hjørnet, blir den bare større. Som sådan, over de neste uavhengige tutene, skal vi lære inn og ut av WordPress plugin-utvikling, som begynner med etableringen av vår første enkle plugin, "Simple Optimization."


Trinn 0 Før vi begynner

Denne opplæringen kommer til å anta at du har minst en nybegynners forståelse av PHP og WordPress-syntaksen. Selv om vi skal dekke alt, vil litt kunnskap på forhånd hjelpe deg med å forstå konseptene mye lettere. Jeg antar også at du har et WP bloggoppsett og klar til å gå.


Trinn 1. Hva pluggen vår gjør

Det aller første skrittet, når du skriver en WP-plugin, er å bestemme alt du vil at den skal gjøre. Siden dette er vår første plugin, vil vi ikke gjøre noe for drastisk. La oss lage noe som vil fremskynde bloggen vår; våre sider kommer til å gjelde raskere, og vi vil også gjøre litt SEO for å forbedre søkeresultatet og finnebarheten.

"Opprett alltid en liste over hva du vil at pluginet ditt egentlig skal gjøre før du skriver noen kode!"

Fjern ubrukelige metakoder:

  • "Rsd_link" - Virkelig Enkel Discovery Link
  • "wlwmanifest_link"- Windows Live Writer-kobling
  • "Wp_generator" - WordPress versjon nummer

Fjern unødvendige filtre:

  • "Wptexturize" - Krøllete sitater
  • "wp_filter_kses" - HTML i brukerprofiler

SEO:

  • Sett inn postkoder i som nøkkelord
  • Sett inn utdrag i som beskrivelse

Trinn 2. Legg grunnarbeidet

For å starte, naviger til plugin-mappen din ("/ wp-innhold / plugins /"), og opprett en ny mappe. Vi kaller vår "enkle optimalisering". Neste, inne i denne mappen, må vi lage to filer. Den første blir den faktiske plugin-filen (oppkalt "Main.php"), og den andre vil være den obligatoriske README ("Readme.txt"). Vi kommer til å forlate readme.txt tom for tiden; så åpne main.php i din foretrukne tekstredigerer og kopier i koden under.

 

Denne teksten er kjevebenet som er nødvendig for at et plugin skal vises i WordPress-plugin-katalogen. Du må åpenbart fylle hver del ettersom du passer.


Trinn 3. Legge til funksjoner

De to første funksjonene vi skal implementere, vil også være det enkleste. Som standard legger WordPress flere meta-tags til delen av bloggen din, men det enkle faktumet er at disse meta-taggene har absolutt ingen verdi i det hele tatt; så vi skal bare stoppe WordPress fra å legge dem til. Når som helst WordPress utfører en handling, blir det enten kalt a filter eller en handling, og vi kan enten fjerne eller manipulere disse filtre og handlinger (du kan finne en liste over alle filtrene her og alle handlingene her). I dette tilfellet vil vi fjerne de forskjellige handlingene som legger til disse metatagsene.

For å gjøre det bruker vi en veldig enkel funksjon som kalles "Remove_action ( 'handling', 'funksjon')". Denne funksjonen fjerner funksjonen deklarert i den andre parameteren fra handlingen, den første parameteren.

 // Ryd opp wp_head // Fjern Virkelig enkel oppdagelseslink remove_action ('wp_head', 'rsd_link'); // Fjern Windows Live Writer-linken remove_action ('wp_head', 'wlwmanifest_link'); // Fjern versionsnummeret remove_action ('wp_head', 'wp_generator');

Det samme samme prinsippet gjelder for de to filtrene vi skal fjerne:

 // Fjern krøllete sitater remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // Tillat HTML i brukerprofiler remove_filter ('pre_user_description', 'wp_filter_kses');

Trinn 4. SEO

Nå som vi har kuttet ut den bloat, la oss sikre at bloggen vår har noen grunnleggende SEO; betyr, la oss sørge for at vi har søkeord per side, som tilsvarer den siden og endrer beskrivelsen for å matche mer med artikkelen. For våre søkeord skal vi ta tak i merkene til gjeldende side / innlegg. Dette er gjort super enkelt av funksjonen "wp_get_post_tags ()". wp_get_post_tags returnerer en rekke koder fra gjeldende innlegg. Vi kan så enkelt formatere dette arrayet i en streng og plassere det i vår overskrift (inne i funksjonen "Wp_head ()", at hvert tema burde ha det allerede) ved å knytte vår funksjon til wp_head-handlingen.

La oss starte med å skape en ny funksjon, tags_to_keywords (), og inne i denne funksjonen skriver vi en enkel hvis uttalelse, som kontrollerer for å se om den nåværende siden er et enkelt innlegg eller en side (ved hjelp av WP-funksjonene: is_single () og is_page ()). Deretter oppretter vi en variabel i dette hvis setningen heter $ tags, og sett innholdet til funksjonen wp_get_post_tags (); For at denne funksjonen skal fungere, må vi passere i en parameter av "post_id". Den enkleste måten for oss å oppnå det er å globalisere WP-variabelen $ post som inneholder post-ID-en ($ Post-> ID, $ post er et objekt som er grunnen til at vi ringer sine verdier som det).

 // SEO // Legg til tagger som søkeord funksjon tags_to_keywords () global $ post; hvis (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); 

Deretter bruker vi en for hver å filtrere gjennom $-taggedataene, og opprett en ny matrise med bare informasjonen vi vil ha ($ tag_array). Etter det vil vi implodere arrayet inn i en streng og skille hvert element fra matrisen med et komma og rom ($ tag_string). Deretter vil vi opprette en annen hvis setning som kontrollerer for å se om $ tag_string har en verdi (betyr at vi har noen koder for innlegget) og hvis det gjør, ekko ut den endelige HTML-koden.

 funksjonen tags_to_keywords () global $ post; hvis (is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tags som $ tag) $ tag_array [] = $ tag-> navn;  $ tag_string = implode (',', $ tag_array); hvis ($ tag_string! == ") echo"\ r \ n "; 

Det siste vi må gjøre nå, er vedlegg vår nye funksjon med wp_head-handlingen. For å gjøre dette, skal vi ringe ADD_ACTION ( 'handling', 'funksjon'), og send det parametrene "wp_head" og "tags_to_keywords" (i den rekkefølgen).

 ADD_ACTION ( 'wp_head', 'tags_to_keywords'); 

For å ytterligere øke vår SEO, skal vi legge til meta-data i beskrivelsen også i toppteksten, med samme metode som søkeordene. Når vi har om setningen omskrives, skal vi lage en ny variabel $ all_post_content og fyll den med WP-funksjonen wp_get_single_post () (og pass parameteren til $ post-> ID). Dette vil gi oss et objekt fullt av alle dataene om innlegget vårt. Med denne variabelen kan vi lage en beskrivelse ved hjelp av det faktiske innholdet i innlegget, men vi skal forkorte det til hundre tegn ved hjelp av funksjonen substr ($ Utdrag). Og så vil vi bare ekko ut HTML-koden med utdraget skrevet inn. (Eventuelt kan du også legge til en ellers uttalelse og ekko bloggbeskrivelsen din ved hjelp av funksjonen get_bloginfo ( 'beskrivelse').)

 // legg til unntatt som beskrivelsesfunksjon excerpt_to_description () global $ post; hvis (is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] '; ekko "\ r \ n "; annet echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');

Trinn 5. Optimalisering av databasen

Den endelige funksjonen for pluginet vårt skal optimalisere databasetabellene ved å fjerne overhead (ubrukelig / overskytende data i et SQL-tabell opprettet ved å manipulere databasen). For å begynne, lager vi en ny funksjon (optimize_database), og inne i det, skal vi ringe den globale WPDB-variabelen ($ wpdb). På den måten kan vi samhandle med databasen uten å måtte skrive inn våre autentiseringsdetaljer. $ wpdb har flere metoder du kan bruke til å samhandle med og hente informasjon fra databasen (Full liste her), men vi skal bare bruke en, get_results. Ved å bruke get_results med parameterne "SHOW TABLES" og "ARRAY_A", returneres til oss en assosiativ rekke av alle tabellnavnene i databasen. På det tidspunktet kan vi bruke en foreak til å gå gjennom hver av arrayverdiene (ved hjelp av array_values for å få tabellnavnet, på grunn av hvordan det er lagdelt av funksjonen) og bruk en annen $ wpdb-metode, spør etter å kjøre optimaliseringen av kommandoen ("OPTIMER TABELL _____").

 // Optimaliser databasefunksjonen optimize_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); foreach ($ all_tables som $ tabeller) $ table = array_values ​​($ tabeller); $ wpdb-> spørring ("OPTIMER TABELL". $ tabell [0]);  

Mens denne funksjonen fungerer, vil den aldri faktisk kjøre fordi WordPress har ingen måte å vite for å kjøre den. Heldigvis har WordPress en funksjon kalt cron, hvilke tidsplaner som skal fungere med bestemte intervaller (daglig, ukentlig, etc ...); Dette er perfekt for oss, siden vi ofte vil optimalisere databasen vår. For å bruke Cron skal vi lage en ny funksjon (simple_optimization_cron_on), og fyll det med et annet funksjonsanrop til wp_schedule_event (). For å jobbe, trenger wp_schedule_event tre ting: en tid til å løpe, et intervall mellom hver runde og en funksjon for å ringe; så vi vil passere det parametrene: 'time ()' (vi antar at når cron hendelsen er opprettet, er det en god tid å ringe funksjonen), 'daily', 'optimize_database' i den rekkefølgen.

 funksjon simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimize_database');  

Flott, nå har vi vår optimize_database funksjon blir lagt til WP cron listen, eller vi ville hvis vi skulle ringe simple_optimization_cron_on funksjon. Det er veldig usikkert, og det er en dårlig praksis å kalle dine egne tilleggsfunksjoner, fordi det gjennom noen tilfeldig system av hendelser kan føre til at funksjonen blir kalt flere ganger. WordPress skjer for å ha et sett med spesifikke kroker for plugins for å løse dette problemet: register_activation_hook og register_deactivation_hook. Disse funksjonene kalles når et plugin er slått på (aktivert) og slått av (deaktivert). På denne måten kan vår cron-funksjon bare legges til en gang. Nå har vi muligheten til å fjerne cron-hendelsen dersom plugin slutter å bli brukt. For å arbeide trenger disse funksjonene to deler av informasjonen: Url til filen som har aktiverings- og deaktiveringsfunksjonene (99% av tiden "__FILE__" vil fungere perfekt her), og navnet på aktiverings- og deaktiveringsfunksjonen. Vi lager også en ny funksjon (simple_optimization_cron_off), og fyll det med en samtale til en annen funksjon (wp_clear_scheduled_hook ('optimize_database')) for å slette vår cron-hendelse.

 funksjon 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'); 

Trinn 6. Fyll ut ReadMe

Det siste vi må gjøre for vårt nye plugin, fyller ut filen readme.txt. Readme.txt-filen brukes av WordPress Plugin-katalogen for å vise all informasjonen du gir om plugin-modulen. Den beste måten å lære å skrive en effektiv readme.txt fil på er å laste ned standard fra WP, og endre den tilsvarende for å passe til plugin. Siden vår var så forenklet, er dette det jeg personlig endte med:

 === Enkel optimalisering === Bidragsytere: Jonathan Wolfe Plugin link: http://net.tutsplus.com/ Tags: enkel, optimalisering, nøkkelord, tagger, beskrivelse, SEO, optimalisere, database Krever minst: 2.5.1 Testet opp til: 2.9.2 Stabil tag: trunk Silent legger til flere optimaliseringsfunksjoner til WordPress back-end for å gjøre bloggen din eller nettstedet raskere. == Beskrivelse == Enkel optimalisering legger til flere funksjoner for WordPress som bidrar til å trimme fettet fra systemet og også rydde opp etter seg selv litt, noe som fører til en raskere lastetid for bloggen eller nettstedet ditt. ** Funksjoner ** _Remove ubrukelig metakoder: _ * "rsd_link" - Virkelig enkel Discovery Link * "wlwmanifest_link" - Windows Live Writer-kobling * "wp_generator" - WordPress versjon nummer _Remove ubrukelige filtre: _ * "wptexturize" - currly sitater * "wp_filter_kses" - HTML i brukerprofiler _SEO: _ * Sett inn posttag i  som nøkkelord _Finans optimalisere database_ == Installasjon == 1. Last ned, pakke ut og laste opp til WordPress-plugin-katalogen 2. Aktiver pluginet i WordPress-administrasjonen 

Det er det!

Du har nettopp skrevet ditt første WordPress-plugin, som fungerer og er klar for WP Plugins Directory. Underveis lærte du om filtre og handlinger, ved hjelp av WP-globale objekter, mye om WordPress-nomenklaturen, hvordan man interagerer med databasen, cron-hendelsene og aktivering / deaktiveringskrokene. Hvis du har spørsmål, vennligst legg igjen en kommentar og jeg svarer så snart jeg kan.

Den endelige koden:

 ID); // få postetiketter foreach ($ tags som $ tag) // gå gjennom hver tag $ tag_array [] = $ tag-> navn; // Opprett ny matrise med bare tagnavn $ tag_string = implode (',', $ tag_array); // konvertere array til kommaseparert streng hvis ($ tag_string! == ") // det vi har tagger ekko"\ r \ n "; // legg til metatagget til   add_action ('wp_head', 'tags_to_keywords'); // Legg til tags_to_keywords til wp_head funksjon // legg til unntatt som beskrivelse funksjon excerpt_to_description () global $ post; // få tilgang til $ postobjektet hvis (is_single () || is_page ()) // bare kjøres på innlegg eller sider $ all_post_content = wp_get_single_post ($ post-> ID); // få alt innhold fra posten / siden $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] '; // få først 100 tegn og legg til "[...]" til slutten ekko "\ r \ n "; // legg til metatagget til   ellers // bare kjøre hvis ikke et innlegg eller en side ekko "\ r \ n "; // legg til metatagget til   add_action ('wp_head', 'excerpt_to_description'); // legg til utdrag_til_description til wp_head-funksjonen // Optimaliser databasefunksjonen optimize_database () global $ wpdb; // få tilgang til $ wpdb objekt $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); // få alle tabellnavn foreach ($ all_tables som $ tabeller) // gå gjennom hvert tabellnavn $ table = array_values ​​($ tabeller); // få tabellnavn ut av array $ wpdb-> query ("OPTIMIZE TABLE". $ tabell [0]); // kjør optimalisere SQL-kommandoen på bordet funksjon simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimize_database'); // rdd optimalisere_database til wp cron hendelser funksjon simple_optimization_cron_off () wp_clear_scheduled_hook ('optimize_database'); // fjern optimalize_database fra wp cron hendelser register_activation_hook (__ FIL __, 'simple_optimization_cron_on'); // kjør simple_optimization_cron_on ved plugin activation register_deactivation_hook (__ FIL __, 'simple_optimization_cron_off'); // kjør simple_optimization_cron_off ved plugin deactivation?>