Pas de betere plug-in voor WordPress voor Google XML Sitemaps aan en breid deze uit

In deze tutorial zullen we zien hoe een zeer nuttige plug-in te installeren en configureren om meerdere XML-sitemaps toe te voegen aan onze WordPress-website: Beter WordPress Google XML Sitemaps.

We zullen ook leren hoe het eenvoudig kan worden uitgebreid door een aangepaste plug-in te schrijven om verschillende items uit sitemaps uit te sluiten en we zullen ook een extra module schrijven om een ​​nieuwe aangepaste sitemap toe te voegen.


Invoering

Een sitemap is een krachtige tool waarmee een webmaster gedetailleerde informatie over de structuur van een site kan verstrekken om het crawlen van pagina's door zoekmachines te vergemakkelijken.

In de eenvoudigste vorm is een sitemap een XML-bestand met URL's voor een site, plus extra metagegevens over elke URL (wanneer deze voor het laatst is bijgewerkt, hoe vaak deze meestal verandert en hoe belangrijk deze is, ten opzichte van andere URL's op de site) ) zodat zoekmachines de site intelligenter kunnen crawlen. (Bron)

Voordat we beginnen, laat ik een korte toelichting geven: ik ben niet de ontwikkelaar van deze plug-in, ik heb hem alleen gebruikt in een recent project waaraan ik heb gewerkt. Omdat ik het erg handig vond, heb ik besloten om een ​​zelfstudie te schrijven over het uitbreiden ervan. Als u gedetailleerde vragen over de functies hebt, kunt u rechtstreeks contact opnemen met de auteur van de plug-in.


Stap 1 Installeer en configureer betere WordPress plug-in voor Google XML Sitemaps

Het belangrijkste kenmerk van Better WordPress Google XML Sitemaps (BWP GXS) is dat het een sitemapindex maakt en verschillende sitemaps voor elk gedeelte van uw blog: berichten (in dit geval kunt u ook grote sitemaps in meerdere kleinere delen splitsen), pagina's, aangepaste berichten, categorieën, tags, aangepaste taxonomieën, datum- en auteurarchief, een Google Nieuws-sitemap, externe pagina's en ga zo maar door ... je kunt al deze gedragingen aanpassen en de verschillende secties activeren op de pagina Instellingen van de plug-in.

Bovendien voegt deze plug-in een koppeling toe aan de sitemap-index voor de robots.txt bestand van uw site.

Ten slotte kan het op twee verschillende manieren worden uitgebreid: via de API's van Hooks en door aangepaste modules te maken. Hoe dan ook, je kunt zeer gedetailleerde informatie over de functies vinden op de plugin-pagina van de WordPress Plugin Repository.

BWP GXS ondersteunt ook WordPress Multi-site installaties.

Klik na de installatie en de activering op Sitemap Generator link onder de BWP GXS menu. Hier kunt u alle aspecten van de plug-in afstemmen: u kunt bijvoorbeeld de Standaard veranderingsfrequentie van de sitemaps, hoeveel lijstitems enzovoort ... Het interessante hier is dat je een goede controle hebt over alle actieve sitemaps: berichten, pagina's, aangepaste berichttypen, categorieën, tags en aangepaste taxonomieën. Voor deze zelfstudie heb ik een gemaakt Film Aangepast berichttype en een Genre Aangepaste taxonomie, u kunt ze in de schermafbeelding zien.

Nu, als u opent http://yoursite.com/sitemapindex.xml (of http://yoursite.com/?bwpsitemap=sitemapindex als u geen permalinks gebruikt) in uw browser, ziet u de sitemapindex met de actieve sitemaps: elke koppeling verwijst naar de sitemap van een specifieke sectie.

Merk op dat dit ook de enige URL is die u moet instellen in de Webmaster Tools-account van uw website.

De enige beperking hier is dat het niet mogelijk is om uitsluiten van specifieke items van de respectieve sitemaps.

Laten we zeggen dat we willen uitsluiten:

  • vijf berichten uit de Posts-sitemap (post.xml)
  • drie berichten van de Film Aangepaste berichten sitemap (post_movie.xml)
  • één pagina vanuit Pages sitemap (page.xml)
  • twee categorieën uit de categories sitemap (taxonomy_category.xml)
  • één tag uit de Tags sitemap (taxonomy_post_tag.xml)
  • twee aangepaste taxonomie-items van de Genre sitemap (taxonomy_genre.xml)

Hoe kunnen we dit doen? Gelukkig kan de plug-in eenvoudig worden uitgebreid dankzij de haken, zodat we een speciale plug-in kunnen schrijven.

Maak een nieuw bestand met de naam bwpgxs-extended-configuration.php, open het in je favoriete teksteditor en plak dit:

 

Kopieer het bestand naar uw / Wp-content / plugins / map en activeer deze op de plugins admin pagina.


Stap 2 Sluit berichten en categorieën uit de sitemaps uit

Zoals ik al zei, kan Better WordPress XML XML Sitemaps-plug-in worden uitgebreid. Volgens de beschrijving van de plug-in:

In versie 1.1.0 zijn er meer hooks aan standaardmodules toegevoegd om eenvoudigere SQL-queries aan te passen om uw sitemaps te bouwen ...
(Bron)

Om specifieker te zijn, BWP GXS stelt ons in staat om berichten, pagina's en aangepaste berichten uit te sluiten via de ID's, terwijl het ons in staat stelt om taxonomieën uit te sluiten via hun naaktslakken.

Items handmatig uitsluiten

Dus laten we de BWP GXS-haakjes gebruiken in onze BWP GXS Uitgebreide configuratie plugin, specifiek: bwp_gxs_post_where en bwp_gxs_term_exclude, zoals uitgelegd in de BWP GXS-beschrijvingspagina (voor meer informatie over WordPress-hooks kunt u de Over WordPress Hooks paragraaf in een vorig artikel dat ik schreef voor Wptuts +).

Voeg deze regels toe aan onze BWP GXS Uitgebreide configuratie inpluggen:

 // UITSLUITEND POSTEN, PAGINA'S, AANGEPASTE POSTEN add_filter ('bwp_gxs_post_where', 'my_bwp_gxs_exclude_posts', 10, 2); // EXCLUDE TAXONOMIES add_filter ('bwp_gxs_term_exclude', 'my_bwp_gxs_exclude_terms', 10, 2); function my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) switch ($ post_type) case 'post': return 'AND wposts.ID NOT IN (1, 2, 3, 4, 5)'; breken; case 'movie': return 'AND wposts.ID NOT IN (7, 8, 9)'; breken; case 'page': return 'AND wposts.ID NOT IN (6)'; breken;  return "; function my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) switch ($ taxonomy) case 'category': return array ('cat-slug1', 'cat-slug2'); break; case 'post_tag': retourneer array ('tag-slug1'); break; case 'genre': return-array ('genre-slug1', 'genre-slug2'); break; return-array ("); 

Op deze manier sluiten we uit:

  • Berichten met ID: 1, 2, 3, 4, 5
  • Een pagina met ID: 6
  • Film Aangepaste berichten met ID: 7, 8, 9
  • Categorieën met naaktslak: cat-slug1 en cat-slug2
  • Eén tag met naaktslak: tag-slug1
  • Genre Aangepaste taxonomie, items met naaktslak: genre-slug1 en genre-slug2

Items op dynamische wijze uitsluiten

Deze oplossing is echter niet eenvoudig te onderhouden: elke keer dat u een nieuw item wilt uitsluiten, moet u het handmatig bewerken BWP GXS Uitgebreide configuratie plugin kernbestand. Het is beter om een ​​speciale instellingenpagina te hebben waar u de te sluiten items kunt instellen. Om dit te doen, kunnen we onze plug-in vertellen om een ​​aangepast instellingspaneel toe te voegen aan het BWP GXS-menu.

Voeg deze regels toe aan de plug-in:

  

Items uitsluiten van XML-sitemaps

Post-ID's
(kommagescheiden)
Movie ID's
(kommagescheiden)
Pagina-ID's
(kommagescheiden)
Categorie naaktslakken
(kommagescheiden)
Tag Slugs
(kommagescheiden)
Genre Slugs
(kommagescheiden)

Sla de wijzigingen op en nu heeft u een nieuwe koppeling in het BWP GXS-invoegtoepassingsmenu: de Items uitsluiten pagina waar u alle gewenste items kunt uitsluiten:

Nu is het tijd om de my_bwp_gxs_exclude_terms en my_bwp_gxs_exclude_posts functies om onze aangepaste opties te ondersteunen en ze dynamisch te laten werken:

 // CATEGORIEËN, TAGS EN DOUANETAXONOMIE 'GENRE'-functie my_bwp_gxs_exclude_terms ($ excluded, $ taxonomy) $ options = get_option (' my_bwp '); switch ($ taxonomy) case 'category': if ($ options ['bwp_exclude_categories']) return explode (',', $ options ['bwp_exclude_categories']);  pauze; case 'post_tag': if ($ options ['bwp_exclude_post_tags']) return explode (',', $ options ['bwp_exclude_post_tags']);  pauze; case 'genre': if ($ options ['bwp_exclude_genre']) return explode (',', $ options ['bwp_exclude_genre']);  pauze;  return array ("); // POSTS EN CUSTOM POST TYPE 'MOVIE' functie my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) $ options = get_option ('my_bwp'); switch ($ post_type) case 'post': als ($ options ['bwp_exclude_posts']) return 'AND wposts.ID NOT IN ('. $ options ['bwp_exclude_posts']. ')'; pauze; case 'movie': if ($ options ['bwp_exclude_movies'] ) return 'AND wposts.ID NOT IN ('. $ options ['bwp_exclude_movies']. ')'; break; case 'page': if ($ options ['bwp_exclude_pages']) return 'AND wposts.ID NOT IN ('. $ Options [' bwp_exclude_pages '].') '; Break; return "; 

Stap 3 Voeg een aangepaste XML-sitemap toe

BWP GXS kan ook worden uitgebreid met extra modules om aangepaste XML-sitemaps te maken. Dit betekent dat u een sitemap kunt toevoegen voor een specifieke sectie van uw website die geen deel uitmaakt van het WordPress-systeem, misschien omdat het niet is geïntegreerd in WordPress op databaseniveau, omdat het verschillende databasetabellen gebruikt van de standaard degenen van WordPress. Een groot voordeel is dat je - via modules - kunt profiteren van de plug-ins database, GZip en Caching-functies.

Laten we een voorbeeld maken: ik heb een fotogalerij die de databasetabellen gebruikt en deze tabellen kunnen niet rechtstreeks worden geopend door de interne functies van WordPress, zoals get_posts (), of vergelijkbaar. Dus, om toegang te krijgen tot de gegevens, is het noodzakelijk om een ​​directe query naar een specifieke tabel te maken. Hoewel het hele gedeelte over fotogalerie is extern voor WordPress kunnen we een XML-sitemap maken van de fotoalbums die door BWP GXS worden gekoppeld in de sitemapindex. In dit voorbeeld maak ik voor de eenvoud alleen een sitemap voor de albums en niet voor alle afzonderlijke foto's.

Technische details fotogalerij

De fotogalerij-albums worden opgeslagen in een fotogallerij tafel:

 CREËER TAFEL 'photo_gallery' ('album_ID' int (4) NOT NULL AUTO_INCREMENT, 'album_naam' varchar (255) NOT NULL DEFAULT ", 'album_nicename' varchar (255) NOT NULL DEFAULT", 'album_date' datetime NIET NULL DEFAULT '0000 -00-00 00:00:00 ',' album_status 'enum (' published ',' draft ',' private ') NOT NULL DEFAULT' draft ', PRIMARY KEY (' album_ID '), UNIQUE KEY' album_nicename '(' album_nicenaam '));

In plaats daarvan worden de afzonderlijke foto's in een andere tabel opgeslagen, maar zoals gezegd voegen we de URL's van de foto's niet toe aan de sitemap, maar alleen album-URL's. Elk album heeft een URL zoals deze:
http://yoursite.com/photo/album-nicename

En allemaal zullen ze de nieuwe XML-sitemap voor fotoalbums worden toegevoegd.

Het wordt ook ten zeerste aanbevolen om geldige sitemapitems te maken om een datetime> veldtype in de tabel.

De BWP GXS-modulesfunctie

In de Sitemap Generator admin pagina, er is een Module-opties sectie. In de Alternatieve module directory veld moet u het volledige pad instellen naar de map die de sitemapmodule van de fotogalerij zal bevatten.

U kunt bijvoorbeeld een maken GXS-modules map in wp-content waar je het PHP-script van de module moet plaatsen. Elke aangepaste sitemap heeft feitelijk een eigen module nodig: een BWP GXS-module is een eenvoudige .php bestand dat een klasse bevat die het bestand uitbreidt BWP_GXS_MODULE klasse geleverd door BWP GXS.

Op deze pagina kunt u ook het aantal items instellen dat in de sitemap moet worden weergegeven via de Krijg niet meer dan veld-.

De Photo Gallery-module schrijven

Maak een nieuw bestand met de naam photo_gallery.php. Open het in je favoriete teksteditor en plak dit:

 set_current_time (); $ This-> build_data ();  function build_data () global $ wpdb, $ bwp_gxs; / * QUERY TO ALBUMS TE KRIJGEN - DE TABEL IS IN DEZELFDE WORDPRESS DB, DUS HIER KUNT U DE wpdb WORDPRESS CLASS GEBRUIKEN OM DE DATABASE TE INTERACTEREN * / $ albums = $ wpdb-> get_results ("SELECT albumnaam, albumdatum UIT fotogalerij> BESTELLING album_datum DESC "); / * ALS DE TABEL IN EEN ANDERE DATABASE IS, KUNT U DE PHP MYSQL-FUNCTIES * / gebruiken als (! Isset ($ albums) || 0 == sizeof ($ albums)) false retourneert; $ data = array (); voor ($ i = 0; $ i < sizeof( $albums ); $i++ )  $album = $albums[$i]; $data = $this->init_data ($ data); // VERVANG DEZE MET JUISTE URL NAAR UW ALBUMS // VOORAL UW WEBSITE-URL $ data ['location'] = 'http://yoursite.com/photo/'. $ Album-> album_nicename; $ data ['lastmod'] = $ this-> format_lastmod (strtotime ($ album-> album_datum)); $ data ['freq'] = "wekelijks"; $ data ['priority'] = 1; $ this-> data [] = $ data;  return true; ?>

Twee zeer belangrijke dingen:

  1. In de $ Data [locatie] regel die u moet vervangen http://yoursite.com met de URL van uw website, anders gooit de module een lege sitemapfout;
  2. Toegestane waarden voor $ Data [ 'freq'] zijn: altijd, ieder uur, dagelijks, wekelijks, maandelijks, jaar-, nooit;

Bewaar het tenslotte in uw wp-content / GXS-modules directory.

De Photo Gallery-module activeren

Nu is het tijd om BWP GXS te vertellen dat onze module moet worden geladen. Ga terug naar jouw BWP GXS Uitgebreide configuratie plugin en voeg deze regels toe aan de bwpgxs-extended-configuration.php het dossier:

 add_action ('bwp_gxs_modules_built', 'my_bwp_gxs_add_modules'); function my_bwp_gxs_add_modules () global $ bwp_gxs; $ bwp_gxs-> add_module ('photo_gallery'); 

Als u mooie permalinks gebruikt, kunt u ook een mooie URL voor de Sitemap-pagina Fotogalerij hebben, iets als http://yoursite.com/photo_gallery.xml.

Voeg ook deze regels toe, opslaan en vergeet niet om uw permalink instellingen bij te werken:

 add_filter ('bwp_gxs_rewrite_rules', 'my_bwp_gxs_add_rewrite_rules'); function my_bwp_gxs_add_rewrite_rules () $ my_rules = array ('photo_gallery.xml' => 'index.php? gxs_module = photo_gallery'); return $ my_rules; 

Het uiteindelijke resultaat zal dit zijn (let op de nieuwe aangepaste sitemap photo_gallery.xml):

Als u op klikt photo_gallery.xml link, ziet u de XML-sitemap voor de fotogalerij die alle links naar uw fotogalerijen bevat:


Tot slot

Betere WordPress Google XML Sitemaps is een zeer nuttige plug-in. Het heeft veel functies waarover we geen tijd hebben om hier uitgebreid over te praten, maar je kunt ze allemaal ontdekken als je het eenmaal hebt geïnstalleerd. Het is uiterst configureerbaar en uitbreidbaar, zoals we hebben gezien, en biedt u de mogelijkheid om volledige ondersteuning te krijgen voor sitemaps op uw website.

Absoluut een zeer goede tool om de zichtbaarheid van uw site op zoekmachines te verbeteren.


Referenties

  • Betere WordPress Google XML Sitemaps in de officiële plug-in repository van WordPress
  • Betere WordPress Documentatie van Google XML Sitemaps
  • WordPress Hooks and Filters: WordPress Plugin API, Over WordPress Hooks in Voeg een aangepaste kolom toe aan berichten en aangepaste berichtensoorten beheerdersscherm
  • WordPress Aangepaste berichttypen
  • Opties voor het verwerken van invoegtoepassingen in WordPress 2.8 met register_setting ()
  • Hulp voor Google Webmasterhulpprogramma's, Sitemaps maken, Sitemap-tagdefinities