Primul dvs. plugin WordPress optimizare simplă

WordPress este cea mai mare platformă de blogare disponibilă pe internet astăzi; și cu lansarea oficială a versiunii 3 chiar după colț, va deveni doar mai mare. Ca atare, peste urmatoarele cateva tutor-uri de sine stătătoare, vom învăța insultele și dezavantajele dezvoltării plugin-ului WordPress, începând cu crearea primului plugin simplu, "Simple Optimization".


Pasul 0 Înainte de a începe

Acest tutorial va presupune că aveți cel puțin o înțelegere a începătorului despre PHP și sintaxa WordPress. Deși vom acoperi totul, unele cunoștințe vor ajuta mai bine la înțelegerea conceptelor mult mai ușor. Voi presupune, de asemenea, că aveți un set de bloguri WP și sunteți gata să plecați.


Pasul 1. Ce face pluginul nostru

Primul pas, atunci când scrieți un plugin WP, este de a determina tot ce doriți să faceți. Deoarece acesta este primul nostru plugin, nu vom face nimic prea drastic. Să creăm ceva care ne va grăbi blogul; paginile noastre vor fi redate mai repede și vom face și SEO pentru a ne îmbunătăți rangul de căutare și găsirea.

"Creați întotdeauna o listă a ceea ce doriți să faceți efectiv plugin-ul dvs. înainte de a scrie orice cod!"

Eliminați metaetichetele inutile:

  • "Rsd_link" - Really Simple Discovery Link
  • „wlwmanifest_link"- link-ul Windows Live Writer
  • "Wp_generator" - Numărul versiunii WordPress

Eliminați filtrele inutile:

  • "Wptexturize" - Citate ghinioniste
  • "wp_filter_kses" - HTML în profiluri de utilizator

SEO:

  • Inserați etichete post în ca și cuvinte cheie
  • Introduceți extrasul de post în ca descriere

Pasul 2. Punerea la bază a lucrărilor

Pentru a începe, navigați la dosarul pluginurilor ("/ wp-content / plugins /") și creați un nou folder. Ne vom numi "simplificarea simplă". Apoi, în interiorul acestui dosar vom avea nevoie să creați două fișiere. Primul va fi fișierul plugin real (numit "Main.php"), iar al doilea va fi README obligatoriu ("Readme.txt"). Vom lasa readme.txt goala pentru moment; deschideți astfel main.php în editorul text preferat și copiați-l în codul de mai jos.

 

Acest text este minimul de oase goale necesar pentru ca un plugin să apară în directorul plugin WordPress. În mod evident, trebuie să umpleți fiecare parte după cum doriți.


Pasul 3. Adăugarea de funcții

Primele două caracteristici pe care le vom implementa vor fi, de asemenea, cele mai simple. Implicit, WordPress adaugă mai multe etichete meta-tag secțiunea din blogul dvs., dar simplul fapt este că aceste meta-tag-uri nu au deloc valoare; așa că pur și simplu vom înceta să le adăugăm WordPress. Oricând WordPress efectuează o acțiune, se numește a filtru sau an acțiune, și putem elimina sau manipula aceste filtre și acțiuni (puteți găsi o listă a tuturor filtrelor de aici și toate acțiunile de aici). În acest caz, dorim să eliminăm diferitele acțiuni care adaugă acele metaetichete.

Pentru a face acest lucru, folosim o funcție foarte simplă numită "Remove_action ( 'acțiune', 'funcție')". Această funcție va elimina funcția declarată în al doilea parametru din acțiune, primul parametru.

 // Curățare wp_head // Eliminați link-ul de descoperire foarte simplu remove_action ('wp_head', 'rsd_link'); // Eliminați link-ul Windows Live Writer remove_action ('wp_head', 'wlwmanifest_link'); // Eliminați numărul versiunii remove_action ('wp_head', 'wp_generator');

Același principiu exact același este valabil și pentru cele două filtre pe care le vom elimina:

 // Eliminați citatele cedate remove_filter ('the_content', 'wptexturize'); remove_filter ('comment_text', 'wptexturize'); // Permite HTML în profilurile utilizatorilor remove_filter ('pre_user_description', 'wp_filter_kses');

Pasul 4. SEO

Acum, că am tăiat această bloat, hai să ne asigurăm că blogul nostru are unele SEO de bază; adică, asigurați-vă că avem cuvinte cheie pe pagină, care corespund acelei pagini și modificați descrierea pentru a se potrivi mai mult cu articolul. Pentru cuvintele cheie, vom apuca etichetele paginii / postului curent. Acest lucru este făcut foarte simplu de funcție "wp_get_post_tags ()". wp_get_post_tags va returna o serie de etichete din postarea curentă. Putem apoi să formatăm cu ușurință această matrice într-un șir și să o plasăm în antetul nostru (în interiorul funcției "Wp_head ()", că fiecare temă ar trebui să aibă deja în ea) prin atașarea funcției noastre la acțiunea wp_head.

Să începem prin crearea unei noi funcții, tags_to_keywords (), și, în interiorul acestei funcții, vom scrie un simplu dacă declarație, care verifică dacă pagina curentă este o singură pagină sau o pagină (folosind funcțiile WP: is_single () și is_page ()). Apoi, vom crea o variabilă în interiorul acestei instrucțiuni if, numită $ tag-uri, și setați conținutul acesteia la funcție wp_get_post_tags (); cu toate acestea, pentru ca această funcție să funcționeze, trebuie să trecem printr-un parametru "post_id". Cea mai ușoară cale pentru a obține acest lucru este globalizarea variabilei WP $ postare care conține ID-ul postului ($ Post-> ID, $ post este un obiect și de aceea suntem numiți valorile lui ca asta).

 // SEO // adauga etichete ca cuvinte cheie function tags_to_keywords () global $ post; dacă is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); 

Apoi, vom folosi a pentru fiecare pentru a filtra prin datele tag-urilor $ și pentru a crea o matrice nouă cu doar informațiile pe care le dorim ($ tag_array). După aceea, vom impropria matricea într-un șir și vom separa fiecare element din matrice cu virgulă și spațiu ($ tag_string). Apoi, vom crea o altă declarație dacă se verifică dacă $ tag_string are o valoare (adică avem tag-uri pentru postare) și, dacă se întâmplă așa, vom relua codul final HTML.

 funcția tags_to_keywords () global $ post; dacă is_single () || is_page ()) $ tags = wp_get_post_tags ($ post-> ID); foreach ($ tag-uri ca $ tag) $ tag_array [] = $ tag-> nume;  $ tag_string = implode (',', $ tag_array); dacă ($ tag_string! == ") echo"\ r \ n "; 

Ultimul lucru pe care trebuie să-l facem acum este atașarea noii noastre funcții cu acțiunea wp_head. Pentru a face asta, o să sunăm ADD_ACTION ( 'acțiunea', 'funcție'), și să îi transmiteți parametrii "wp_head" și "tags_to_keywords" (în acea ordine).

 ADD_ACTION ( 'wp_head', 'tags_to_keywords'); 

Pentru a mări și mai mult SEO, vom adăuga și metadatele noastre de descriere în antet, folosind aceeași metodă ca și cuvintele cheie. Odată ce am revocat instrucțiunea if, vom crea o nouă variabilă $ all_post_content și completați-l utilizând funcția WP wp_get_single_post () (și treceți parametrul $ post-> ID). Acest lucru ne va da un obiect plin de toate datele despre postul nostru. Cu această variabilă, putem crea o descriere utilizând conținutul real al postării, dar o vom scurta până la o sută de caractere utilizând funcția substr ($ Extras). Apoi, vom relua HTML-ul cu extrasul scris în. (Opțional, puteți adăuga și un altfel declarație, și ecou descrierea blog-ul dvs. folosind funcția get_bloginfo ( 'descriere').)

 // adaugă excepția ca funcție de descriere excerpt_to_description () global $ post; dacă is_single () || is_page ()) $ all_post_content = wp_get_single_post ($ post-> ID); $ excerpt = substr ($ all_post_content-> post_content, 0, 100). " [...] "; ecou "\ r \ n "; altceva echo"\ r \ n "; add_action ('wp_head', 'excerpt_to_description');

Pasul 5. Optimizarea bazei de date

Caracteristica finală pentru pluginul nostru este de a optimiza tabelele bazei de date prin eliminarea cheltuielilor aeriene (date inutile / în exces într-un tabel SQL creat prin manipularea bazei de date). Pentru a începe, vom crea o nouă funcție (optimize_database), iar în interiorul acestuia vom numi variabila globală WPDB ($ wpdb). În acest fel, putem interacționa cu baza de date, fără a trebui să reintroducem detaliile de autentificare. $ wpdb are mai multe metode pe care le puteți utiliza pentru a interacționa și pentru a prelua informații din baza de date (Lista completă aici), dar vom folosi doar unul, get_results. Folosind get_results cu parametrii "SHOW TABLES" și "ARRAY_A" se va întoarce la noi o matrice asociativă a tuturor denumirilor de tabele din baza de date. În acest moment, putem folosi o foreach pentru a buclei prin fiecare dintre valorile matricei (folosind array_values pentru a obține numele tabelului, din cauza modului în care acesta este stratificat de funcție) și utilizați o altă metodă $ wpdb, interogare pentru a rula comanda de optimizare ("OPTIMIZE TABLE _____").

 // Optimize funcția bazei de date optimize_database () global $ wpdb; $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); foreach ($ all_tables ca $ tabele) $ table = array_values ​​($ tables); $ wpdb-> interogare ("OPTIMIZE TABLE". $ table [0]);  

În timp ce această funcție funcționează, nu va funcționa niciodată, deoarece WordPress nu are cum să știe să o execute. Din fericire, WordPress are o caracteristică numită cron, care programează funcții pentru a rula la intervale specifice (zilnic, săptămânal, etc ...); acest lucru este perfect pentru noi, deoarece dorim să optimizăm frecvent baza noastră de date. Pentru a utiliza Cron, vom crea o nouă funcție (simple_optimization_cron_on), și umpleți-l cu o altă funcție apel la wp_schedule_event (). Pentru a funcționa, wp_schedule_event are nevoie de trei lucruri: un timp pentru a rula, un interval între fiecare execuție și o funcție de apel; așa că vom trece parametrii: 'time ()' (vom presupune că ori de câte ori evenimentul cron este creat este un moment bun pentru a apela funcția), 'zilnic', 'optimize_database' în acea ordine.

 funcția simple_optimization_cron_on () wp_schedule_event (timp (), "zilnic", "optimize_database");  

Mare, acum avem optimize_database adăugând o funcție la lista WP cron, sau dacă am fi sunat la simple_optimization_cron_on funcţie. Este într-adevăr nesigur și este o practică proastă de a numi propriile funcții de adăugare de evenimente, deoarece prin intermediul unui sistem arbitrar de evenimente, aceasta ar putea determina numirea funcției de mai multe ori. WordPress se întâmplă să aibă un set de cârlige specifice pentru pluginuri pentru a rezolva această problemă: register_activation_hook și register_deactivation_hook. Aceste funcții sunt numite atunci când un plugin este activat (activat) și dezactivat (dezactivat). În acest fel, funcția noastră cron poate fi adăugată o singură dată. Acum, avem capacitatea de a elimina evenimentul cron dacă plugin-ul nu mai este folosit. Pentru a funcționa, aceste funcții necesită două informații: adresa URL a fișierului care are funcțiile de activare și dezactivare (99% din timp "__FILE__" va funcționa perfect aici) și numele funcției de activare și dezactivare. Vom crea, de asemenea, o nouă funcție (simple_optimization_cron_off) și completați-o cu un apel către o altă funcție (wp_clear_scheduled_hook ('optimize_database')) pentru a șterge evenimentul cron.

 funcția simple_optimization_cron_off () wp_clear_scheduled_hook ('optimize_database');  register_activation_hook (__ FILE __, 'simple_optimization_cron_on'); register_deactivation_hook (__ __ DOSAR, 'simple_optimization_cron_off'); 

Pasul 6. Completarea programului ReadMe

Ultimul lucru pe care trebuie să-l facem pentru pluginul nostru nou este completarea fișierului readme.txt. Fișierul readme.txt este folosit de directorul WordPress Plugin pentru a afișa toate informațiile pe care le furnizați despre plugin-ul dvs. Cea mai bună modalitate de a afla cum să scrieți un fișier eficient readme.txt este să descărcați implicit din WP și să îl modificați corespunzător pentru a se potrivi cu plugin-ul. Din moment ce a fost atât de simplistă, cu asta am ajuns personal:

 === Simple Optimization === Contribuitori: Jonathan Wolfe Plugin link: http://net.tutsplus.com/ Tag-uri: simplu, optimizare, cuvinte cheie, tag-uri, descriere, optimizare SEO, baza de date Necesită cel puțin: până la: 2.9.2 Etichetă stabilă: portbagaj Adaugă în mod silențios câteva funcții de optimizare în back-end-ul WordPress pentru a face blogul sau site-ul să ruleze mai repede. == Descriere == Optimizare simplă adaugă mai multe funcții WordPress care ajută la tăierea grăsimilor din sistem și, de asemenea, curățați după ea însăși un pic toate conducând la un timp de încărcare mai rapid pentru blog-ul sau site-ul dvs. Web. ** Caracteristici ** _Remove meta tag-uri inutile: _ * "rsd_link" - Really Simple Discovery Link * "wlwmanifest_link" - linkul Windows Live Writer * "wp_generator" - Numar versiune WordPress _Remove filtre inutile: _ * "wptexturize" "wp_filter_kses" - HTML în profilurile utilizatorilor _SEO: _ * Inserați etichetele post în  ca și cuvinte cheie _Perfectați optimizarea bazei de date_ == Instalare == 1. Descărcați, dezarhivați și încărcați în directorul de pluginuri WordPress 2. activați plugin-ul din cadrul dvs. WordPress Administration 

Asta e!

Tocmai ați scris primul dvs. plugin WordPress, care funcționează și este pregătit pentru WP Plugins Directory. Pe parcurs, ați învățat despre filtre și acțiuni, folosind obiecte globale WP, multe despre nomencaltura WordPress, cum să interacționați cu baza de date, evenimente cron și cârlige de activare / dezactivare. Dacă aveți întrebări, vă rugăm să lăsați un comentariu și voi răspunde cât de repede pot.

Codul final:

 ID); // primiți etichetele pentru postare (tagurile $ ca etichetă $) // buclă prin fiecare etichetă $ tag_array [] = $ tag-> name; // creați o nouă matrice cu nume de etichete numai $ tag_string = implode (',', $ tag_array); // converti matrice în șir separat prin virgulă dacă ($ tag_string! == ") // avem etichete ecou"\ r \ n "; // adăugați meta tag la   add_action ('wp_head', 'tags_to_keywordswords'); // Adăugați tags_to_keywords la funcția wp_head // adăugați excepția ca funcție de descriere excerpt_to_description () global $ post; // accesează obiectul $ post dacă (is_single () || is_page ()) // rulează numai pe postări sau pagini $ all_post_content = wp_get_single_post ($ post-> ID); // a obține tot conținutul din post / pagină $ excerpt = substr ($ all_post_content-> post_content, 0, 100). ' [...] "; // obțineți primele 100 de caractere și adăugați "[...]" la ecoul final "\ r \ n "; // adăugați meta tag la   altceva // rulați numai dacă nu un mesaj sau un ecou de pagină "\ r \ n "; // adăugați meta tag la   add_action ('wp_head', 'excerpt_to_description'); // adăugați excerpt_to_description la funcția wp_head // Optimize funcția bazei de date optimize_database () global $ wpdb; // accesați $ wpdb object $ all_tables = $ wpdb-> get_results ('SHOW TABLES', ARRAY_A); // primi toate numele de tabel foreach ($ all_tables ca $ tabele) // bucla prin fiecare tabel nume $ table = array_values ​​($ tables); // obține numele tabelului din array $ wpdb-> interogare ("OPTIMIZE TABLE". $ table [0]); // executați comanda de optimizare SQL pe masă funcția simple_optimization_cron_on () wp_schedule_event (time (), 'daily', 'optimize_database'); // rdd optimize_database la wp cron events funcția simple_optimization_cron_off () wp_clear_scheduled_hook ('optimize_database'); // remove optimize_database din wp cron evenimente register_activation_hook (__FILE __, 'simple_optimization_cron_on'); // rulați simple_optimization_cron_on la activarea pluginului register_deactivation_hook (__ FILE __, 'simple_optimization_cron_off'); // rulați simple_optimization_cron_off la dezactivarea pluginului?
Cod