Personalizați și extindeți modulul mai bun WordPress Google XML Sitemaps Plugin

În acest tutorial vom vedea cum să instalați și să configurați un plugin foarte util pentru a adăuga mai multe sitemap-uri XML pe site-ul Web powered by WordPress: WordPress mai bun Google XML Sitemaps.

De asemenea, vom învăța cum să o extindem cu ușurință scriind un plugin personalizat pentru a exclude diferite elemente din sitemap-uri și vom scrie un modul suplimentar pentru a adăuga un nou sitemap personalizat.


Introducere

Sitemap este un instrument puternic care permite unui webmaster să furnizeze informații detaliate despre structura unui site pentru a facilita accesarea cu crawlere a paginilor de către motoarele de căutare.

În forma sa cea mai simplă, un sitemap este un fișier XML care afișează adresele URL pentru un site, împreună cu metadate suplimentare despre fiecare adresă URL (când a fost actualizată ultima dată, cât de des se schimbă de obicei și cât de important este, față de alte adrese URL din site ), astfel încât motoarele de căutare să poată accesa cu crawlere site-ul mai inteligent. (Sursă)

Înainte de a începe, permiteți-mi să fac o scurtă clarificare: Eu nu sunt dezvoltatorul acestui plugin, am folosit-o doar într-un proiect recent la care am lucrat. Din moment ce am găsit-o foarte utilă, am decis să scriu un tutorial privind extinderea acesteia. Dacă aveți întrebări detaliate despre caracteristicile sale, nu ezitați să contactați direct autorul pluginului.


Pasul 1 Instalați și configurați mai bine WordPress Google XML Sitemaps Plugin

Principala caracteristică a Sitemap-urilor Google XML XML (BWP GXS) este că creează un index de sitemap și sitemap-uri diferite pentru fiecare secțiune a blogului dvs.: Postări (în acest caz puteți de asemenea împărți sitemap-uri mari în mai multe mai mici), pagini, postări personalizate, categorii, etichete, taxonomii personalizate, date și arhive autor, și așa mai departe ... puteți personaliza toate aceste comportamente și puteți activa diferitele secțiuni din pagina Setări a pluginului.

În plus, acest plugin adaugă un link la indexul sitemap la robots.txt fișierul site-ului dvs..

În cele din urmă, acesta poate fi extins în două moduri diferite: prin API-urile Hooks și prin crearea modulelor personalizate. Oricum, puteți găsi informații detaliate despre caracteristicile sale în pagina plug-in de pe WordPress Plugin Repository.

BWP GXS sprijină, de asemenea, instalările WordPress Multi-site.

După instalare și activare, faceți clic pe Sitemap Generator link în cadrul BWP GXS meniul. Aici puteți regla toate aspectele pluginului: puteți seta, de exemplu, Frecvența schimbărilor implicite de sitemap-uri, câte elemente de listă și așa mai departe ... Interesant este că aveți un control bun asupra tuturor sitemap-urilor active: Postări, Pagini, Tipuri personalizate de posturi, Categorii, Etichete și Taxonomii personalizate. Pentru acest tutorial, am creat un Film Tip de post particularizat și a gen literar Taxonomie personalizată, îi puteți vedea în screenshot.

Acum, dacă te deschizi http://yoursite.com/sitemapindex.xml (sau http://yoursite.com/?bwpsitemap=sitemapindex dacă nu utilizați permalinks) în browserul dvs., veți vedea indexul sitemap-ului cu sitemap-urile active: fiecare legătură indică harta site-ului unei anumite secțiuni.

Rețineți că aceasta este și singura adresă URL pe care trebuie să o setați în contul Google Webmaster Tools al site-ului dvs. web.

Singura limitare aici este că nu este posibil exclude anumite elemente de la sitemap-urile respective.

Să spunem că vrem să excludem:

  • cinci posturi din sitemap-ul Posts (post.xml)
  • trei posturi de la Film Sitemap-uri personalizate pentru mesaje (post_movie.xml)
  • o pagină de la Sitemap-uri de pagini (page.xml)
  • două categorii din Sitemap (taxonomy_category.xml)
  • o etichetă de pe sitemap-ul de etichete (taxonomy_post_tag.xml)
  • două elemente taxonomice personalizate din gen literar sitemap (taxonomy_genre.xml)

Cum putem face asta? Din fericire, pluginul poate fi extins cu ușurință datorită cârligelor sale, astfel încât să putem scrie un plugin dedicat.

Creați un fișier nou numit bwpgxs-extins-configuration.php, deschideți-l în editorul dvs. de text preferat și lipiți-l pe acesta:

 

Copiați fișierul în memoria dvs. / Wp-content / plugins / și să o activați pe Plugin-uri pagina de administrare.


Pasul 2 Exclude posturile și categoriile de la sitemap-uri

După cum am spus, Google Word Sitemap Plugin-ul mai bun pentru WordPress poate fi extins. În funcție de descrierea pluginului:

În versiunea 1.1.0 au fost adăugate mai multe cârlige la modulele implicite pentru a permite personalizarea mai ușoară a interogărilor SQL utilizate pentru a construi sitemap-urile dvs. ...
(Sursă)

Mai precis, BWP GXS ne permite să excludem postările, paginile și postările personalizate prin ID-uri, în timp ce ne permite să excludem taxonomiile prin serviciul lor.

Excludeți articolele manual

Deci, haideți să folosim cârligele BWP GXS în nostru Configurația extinsă BWP GXS plugin, în special: bwp_gxs_post_where și bwp_gxs_term_exclude, așa cum se explică în pagina de descriere BWP GXS (pentru mai multe detalii despre cârligele WordPress puteți citi Despre WordPress Hooks paragraful dintr-un articol anterior pe care l-am scris pentru Wptuts +).

Adăugați aceste linii la adresa noastră Configurația extinsă BWP GXS conecteaza:

 // EXCLUDE POSTURI, PAGINI, POSTURI VAMALE add_filter ('bwp_gxs_post_where', 'my_bwp_gxs_exclude_posts', 10, 2); // EXCLUDE TAXONOMII add_filter ('bwp_gxs_term_exclude', 'my_bwp_gxs_exclude_terms', 10, 2); funcția my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) comutare ($ post_type) caz 'post': return 'ȘI wposts.ID NOT IN (1, 2, 3, 4, 5)'; pauză; caz "film": întoarcere 'AND wposts.ID NOT IN (7, 8, 9)'; pauză; caz "pagină": întoarcere 'AND wposts.ID NOT IN (6)'; pauză;  return; funcția my_bwp_gxs_exclude_terms ($ excluse, $ taxonomy) switch (taxonomie $) case 'categoria': return matrix ('cat-slug1'; array ("gen-slug1", "gen-slug2"); break; array retur ("); 

În acest fel vom exclude:

  • Postări cu ID: 1, 2, 3, 4, 5
  • O pagină cu ID: 6
  • Film Mesaje personalizate cu ID: 7, 8, 9
  • Categorii cu slug: pisică-slug1 și pisică-slug2
  • O etichetă cu bacșiș: tag-slug1
  • gen literar Taxonomie personalizată, articole cu tonaj: gen-slug1 și gen-slug2

Excludeți articole dinamic

Cu toate acestea, această soluție nu este ușor de întreținut: de fiecare dată când doriți să excludeți un element nou, trebuie să editați manual Configurația extinsă BWP GXS plugin core file. Ar fi mai bine să aveți o pagină dedicată pentru setări, unde puteți seta elementele pe care să le excludeți. Pentru a face acest lucru, putem spune pluginului nostru să adăugăm un panou de setări personalizate în meniul BWP GXS.

Adăugați aceste linii în plugin:

  

Excludeți articole din Sitemap-uri XML

Identificarea mesajelor
(separate prin virgulă)
Coduri de film
(separate prin virgulă)
Coduri de pagină
(separate prin virgulă)
Categorie Slugs
(separate prin virgulă)
Tag Slugs
(separate prin virgulă)
Genul Slugs
(separate prin virgulă)

Salvați modificările și acum veți avea un nou link în meniul BWP GXS Plugin: Excludeți articolele în care puteți exclude toate elementele pe care le doriți:

Acum este momentul să modificați my_bwp_gxs_exclude_terms și my_bwp_gxs_exclude_posts funcționează pentru a sprijini opțiunile personalizate și pentru a le face să funcționeze dinamic:

 // CATEGORII, TAGURI ȘI TAXONOMIE VAMALĂ "GENRE" funcția my_bwp_gxs_exclude_terms ($ excluse, taxonomie $) $ options = get_option ('my_bwp'); comutare (taxonomie $) case 'categorie': if ($ opțiuni ['bwp_exclude_categories']) return explode (',' $ opțiuni ['bwp_exclude_categories']);  pauză; cazul 'post_tag': dacă ($ opțiuni ['bwp_exclude_post_tags']) return explode (',', $ opțiuni ['bwp_exclude_post_tags']);  pauză; caz "gen": dacă ($ opțiuni ['bwp_exclude_genre']) retur explode (',', $ opțiuni ['bwp_exclude_genre']);  pauză;  return array ("); // funcția POSTS și POST TYPE POST 'MOVIE' my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) $ opțiuni = get_option ('my_bwp'); ($ options ['bwp_exclude_posts']) return 'AND wposts.ID NOT IN ('. $ opțiuni ['bwp_exclude_posts'].) '; break' caz 'film: if ($ options [' bwp_exclude_movies '] ) return 'ȘI wposts.ID NOT IN ('. $ opțiuni ['bwp_exclude_movies'].) '; break' caz 'pagina: if ($ opțiuni [' bwp_exclude_pages ']) return' AND wposts.ID NOT IN ('. $ Opțiuni [' bwp_exclude_pages '].)'; Break; retur "; 

Pasul 3 Adăugați un Sitemap personalizat XML

BWP GXS poate fi, de asemenea, extins cu suplimentare module pentru a crea sitemap-uri personalizate XML. Acest lucru înseamnă că puteți adăuga un sitemap pentru o anumită secțiune a site-ului dvs. web care nu face parte din sistemul WordPress, probabil pentru că nu este integrat în WordPress la nivelul bazei de date, deoarece utilizează tabele de baze de date diferite din cele implicite în WordPress. Un lucru minunat este că - prin module - puteți profita de baza de date a pluginului, funcțiile GZip și Caching.

Hai să facem un exemplu: am o galerie foto care utilizează tabelele bazei sale de date și aceste tabele nu pot fi accesate direct de funcțiile interne ale WordPress, cum ar fi get_posts (), sau asemănător. Deci, pentru a accesa datele, este necesar să faceți o interogare directă la o anumită tabelă. Deși întreaga secțiune a galerii foto este extern la WordPress, putem crea un sitemap XML al albumelor foto care vor fi legate de BWP GXS în indexul sitemap-ului. În acest exemplu, pentru simplitate, voi face un sitemap numai pentru albume și nu pentru toate fotografiile.

Galerie foto Detalii tehnice

Albumele pentru galeria foto sunt stocate într-un Galerie foto masa:

 CREATE TABLE 'photo_gallery' ('album_ID' int (4) NU NULL AUTO_INCREMENT, 'nume_balum' varchar (255) NOT NULL DEFAULT ',' album_nicename 'varchar (255) NOT NULL DEFAULT " - "0000:00 00:00:00 ',' album_status 'enum (' publicat ',' schiță ',' privat ') NULL DEFAULT' draft ', PRIMARY KEY' album_nicename '));

În schimb, fotografiile unice sunt stocate într-un alt tabel, dar așa cum am spus, nu vom adăuga adresele URL ale fotografiilor la sitemap-ul, doar adresele URL ale albumelor. Fiecare album are un URL ca acesta:
http://yoursite.com/photo/album-nicename

Și toate acestea vor fi adăugate noua galerie foto XML sitemap.

De asemenea, este recomandat - pentru a crea intrări de sitemap valide - să aveți a datetime> câmp în tabel.

Modulul BWP Module GXS

În Sitemap Generator pagina de admin, există o Module Opțiuni secțiune. În Directorul modulului alternativ trebuie să setați calea completă la directorul care va conține modulul sitemap pentru galeria foto.

De exemplu, puteți crea un gxs-module directorul din wp-content unde trebuie să puneți scriptul modulului PHP. Fiecare sitemap personalizat are de fapt un modul propriu: un modul BWP GXS este simplu .php fișier care conține o clasă care extinde BWP_GXS_MODULE oferită de BWP GXS.

În această pagină puteți seta și numărul de elemente de afișat în sitemap prin Nu mai mult decât camp.

Scrierea modulului Galerie foto

Creați un fișier nou numit photo_gallery.php. Deschideți-l în editorul dvs. de text preferat și lipiți-l pe acesta:

 set_current_time (); $ This-> build_data ();  funcția build_data () global $ wpdb, $ bwp_gxs; / * QUERY pentru a obține ALBUMS - tabelul este în același WORDPRESS DB, astfel încât să puteți folosi aici CLASA wpdb WORDPRESS pentru a interacționa cu baza de date * / $ albums = $ wpdb-> get_results ("SELECT album_nicename, album_date FROM photo_gallery ORDER BY album_date DESC "); / * DACĂ MESAJUL ESTE ÎN ALTĂ BAZĂ DE BAZĂ, POȚI UTILIZAȚI FUNCȚIILE PHP MYSQL * / if (! Isset ($ albums) || 0 == sizeof ($ albums)) return false; $ date = array (); pentru ($ i = 0; $ i < sizeof( $albums ); $i++ )  $album = $albums[$i]; $data = $this->init_data ($ data); // REPLACE ACEASTĂ CU URL CORECT PENTRU ALBUMELE DVS. // SPECIAL WEBSITE URL $ data ['locație'] = 'http://yoursite.com/photo/'. $ Album-> album_nicename; $ date ['lastmod'] = $ acest-> format_lastmod (strtotime ($ album-> album_date)); $ date ['freq'] = "săptămânal"; $ date ['prioritate'] = 1; $ this-> data [] = $ date;  return true; ?>

Două lucruri foarte importante:

  1. În date $ [ 'locatie'] linia pe care trebuie să o înlocuiți http://yoursite.com cu adresa URL a site-ului dvs. web, altfel modulul va arunca o eroare sitemap goală;
  2. Valorile permise pentru $ date [ 'frecvențe'] sunteți: mereu, pe oră, zilnic, săptămânal, lunar, anual, nu;

În cele din urmă, salvați-l în dvs. wp-content / gxs-module director.

Activarea modulului Galerie foto

Acum este momentul să-i spuneți BWP GXS să încarce modulul nostru. Întoarce-te la tine Configurația extinsă BWP GXS plugin și adăugați aceste linii la bwpgxs-extins-configuration.php fişier:

 add_action ('bwp_gxs_modules_built', 'my_bwp_gxs_add_modules'); funcția my_bwp_gxs_add_modules () global $ bwp_gxs; $ bwp_gxs-> add_module ('photo_gallery'); 

Dacă utilizați destul de permalinks, puteți avea, de asemenea, o adresă URL destul de bună pentru pagina Sitemap pentru galeria foto, ceva asemănător http://yoursite.com/photo_gallery.xml.

Adăugați, de asemenea, aceste linii, salvați și nu uitați să vă actualizați setările Permalink:

 add_filter ('bwp_gxs_rewrite_rules', 'my_bwp_gxs_add_rewrite_rules'); funcția my_bwp_gxs_add_rewrite_rules () $ my_rules = array ('photo_gallery.xml' => 'index.php? gxs_module = photo_gallery'); returnează $ my_rules; 

Rezultatul final va fi acest lucru (observați noul sitemap personalizat photo_gallery.xml):

Dacă faceți clic pe photo_gallery.xml link, veți vedea Sitemap XML Sitemap care conține toate legăturile spre galeriile dvs. de fotografii:


In concluzie

Better WordPress Google XML Sitemaps este un plugin foarte util. Are multe caracteristici pe care nu avem timp să discutăm aici mai mult, dar le puteți descoperi pe toate odată ce le instalați. Este extrem de configurabil și extensibil, așa cum am văzut, și vă permite să aveți sprijinul deplin al sitemap-urilor de pe site-ul dvs. Web.

Definitiv un instrument foarte bun pentru a îmbunătăți vizibilitatea site-ului dvs. pe motoarele de căutare.


Referințe

  • Mai bun WordPress Google XML Sitemaps pe WordPress oficial repository plugin
  • Documentație mai bună WordPress Google XML Sitemaps
  • Wordpress Hooks și Filtre: WordPress Plugin API, Despre WordPress Hooks în Adăugați o coloană personalizată în ecranul Administrări pentru postări și tipuri personalizate de postări
  • WordPress Custom Post Types
  • Manipularea opțiunilor de pluginuri în WordPress 2.8 cu register_setting ()
  • Ajutor pentru Instrumentele Google pentru webmasteri, Crearea de Sitemap-uri, definiții de tag-uri Sitemap
Cod