I denne veiledningen vil vi se hvordan du installerer og konfigurerer et veldig nyttig plugin for å legge til flere XML-sitemaps til vårt WordPress-drevne nettsted: Bedre WordPress Google XML Sitemaps.
Vi vil også lære å utvide det enkelt ved å skrive et tilpasset plugin for å ekskludere ulike elementer fra nettstedkart, og vi vil også skrive en ekstra modul for å legge til en ny tilpasset sitemap.
Et sitemap er et kraftig verktøy som gjør det mulig for en nettredaktør å gi detaljert informasjon om strukturen til et nettsted for å lette gjennomsøkingen av sider ved søkemotorer.
I sin enkleste form er et sitemap en XML-fil som viser nettadresser for et nettsted sammen med flere metadata om hver nettadresse (når den sist ble oppdatert, hvor ofte den vanligvis endres, og hvor viktig det er i forhold til andre nettadresser på nettstedet ) slik at søkemotorer kan gjennomsøke nettstedet mer intelligent. (Kilde)
Før vi begynner, la meg gjøre en kort avklaring: Jeg er ikke utvikleren av dette pluginet, jeg brukte det bare i et nylig prosjekt jeg jobbet med. Siden jeg fant det veldig nyttig, bestemte jeg meg for å skrive en opplæring om å utvide den. Hvis du har detaljerte spørsmål om funksjonene, kan du kontakte pluggforfatteren direkte.
Hovedtrekk ved Better WordPress Google XML Sitemaps (BWP GXS) er at den oppretter en sitemapindeks og forskjellige nettstedskart for hver del av bloggen din: Innlegg (i dette tilfellet kan du også dele store nettstedskart i flere mindre), Sider, Egendefinerte innlegg, Kategorier, Merker, Tilpassede Taxonomier, Dato og Forfatterarkiver, En Google Nyheter Sitemap, Eksterne sider og så videre ... du kan tilpasse alle disse oppføringene og aktivere de ulike seksjonene i pluginens Innstillinger-side.
I tillegg legger dette plugin en lenke til sitemapindeksen til robots.txt fil på nettstedet ditt.
Til slutt kan den utvides på to forskjellige måter: Gjennom Hooks APIs og ved å lage egendefinerte moduler. Uansett kan du finne svært detaljert informasjon om dens funksjoner på plugin-siden på WordPress Plugin Repository.
BWP GXS støtter også WordPress Multi-site installasjoner.
Etter installasjonen og aktiveringen, klikk på Sitemap Generator lenke under BWP GXS Meny. Her kan du tune alle aspekter av plugin: du kan for eksempel angi Standard endringsfrekvens av nettstedskartene, hvor mange listeposter og så videre ... Det interessante her er at du har god kontroll over alle aktive sitemaps: Innlegg, Sider, Tilpassede Posttyper, Kategorier, Merker og Tilpassede Taxonomier. For denne opplæringen opprettet jeg en Film Tilpasset innleggstype og a Sjanger Tilpasset taksonomi, du kan se dem i skjermbildet.
Nå, hvis du åpner http://yoursite.com/sitemapindex.xml (eller http://yoursite.com/?bwpsitemap=sitemapindex hvis du ikke bruker permalinks) i nettleseren din, vil du se sitemapindeksen med de aktive sitemapsene: hver lenke peker til nettstedkartet til en bestemt seksjon.
Vær oppmerksom på at dette også er den eneste nettadressen du må angi på nettstedets Google Webmaster Tools-konto.
Den eneste begrensningen her er at det ikke er mulig å ekskluder bestemte elementer fra de respektive nettstedskartene.
La oss si at vi ønsker å ekskludere:
Hvordan kan vi gjøre dette? Heldigvis kan pluggen enkelt utvides takket være krokene, slik at vi kan skrive en dedikert plugin.
Opprett en ny fil som heter bwpgxs-utvidet configuration.php, åpne den i din favoritt tekstredigerer og lim inn dette:
Kopier filen til din / Wp-content / plugins / katalog og aktiver den på plugins admin side.
Som jeg sa, kan bedre WordPress Google XML Sitemaps Plugin utvides. I følge pluginbeskrivelsen:
I versjon 1.1.0 er flere kroker lagt til i standardmodulene for å muliggjøre lettere tilpasning av SQL-spørringer som brukes til å bygge dine nettstedkart ...
(Kilde)
For å være mer spesifikk, tillater BWP GXS oss å ekskludere innlegg, sider og egendefinerte innlegg gjennom IDene, mens det tillater oss å utelukke taksonomier gjennom sine snegler.
Så, la oss bruke BWP GXS kroker i vår BWP GXS utvidet konfigurasjon plugin, spesielt: bwp_gxs_post_where
og bwp_gxs_term_exclude
, som forklart i BWP GXS beskrivelse siden (for mer informasjon om WordPress kroker kan du lese Om WordPress kroker avsnitt i en tidligere artikkel jeg skrev for Wptuts +).
Legg disse linjene til vår BWP GXS utvidet konfigurasjon plugg inn:
// EXCLUDE POSTS, SIDER, TJENESTE POSTER 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); fungere my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) bytter ($ post_type) case 'post': return 'og wposts.ID IKKE IN (1, 2, 3, 4, 5)'; gå i stykker; case 'movie': returnere 'og wposts.ID IKKE IN (7, 8, 9)'; gå i stykker; case 'side': return 'og wposts.ID IKKE IN (6)'; gå i stykker; returnere "; funksjonen my_bwp_gxs_exclude_terms ($ ekskludert, $ taksonomi) switch ($ taksonomi) case 'category': returneringsgruppe ('cat-slug1', 'cat-slug2'); break; case 'post_tag' array ('tag-slug1'); break; case 'genre': returnere array ('genre-slug1', 'genre-slug2'); break; retur array (");
På denne måten utelukker vi:
1, 2, 3, 4, 5
6
7, 8, 9
cat-slug1
og cat-slug2
tag-slug1
sjanger slug1
og sjanger slug2
Men denne løsningen er ikke lett å vedlikeholde: hver gang du vil ekskludere et nytt element må du manuelt redigere BWP GXS utvidet konfigurasjon plugin core-fil. Det ville vi bedre å ha en dedikert Innstillinger-side der du kan angi at elementene skal utelukkes. For å gjøre dette kan vi fortelle pluginet vårt for å legge til et tilpasset innstillingspanel i BWP GXS-menyen.
Legg til disse linjene i plugin:
Ekskluder elementer fra XML Sitemaps
Lagre endringene, og nå har du en ny lenke i BWP GXS Plugin-menyen: Ekskluder elementer side hvor du kan ekskludere alle elementene du vil ha:
Nå er det på tide å endre my_bwp_gxs_exclude_terms
og my_bwp_gxs_exclude_posts
Fungerer for å støtte våre tilpassede alternativer og få dem til å fungere dynamisk:
// CATEGORIES, TAGS AND CUSTOM TAXONOMY 'GENRE'-funksjonen my_bwp_gxs_exclude_terms ($ ekskludert, $ taksonomi) $ options = get_option (' my_bwp '); bytte ($ taksonomi) case 'category': hvis ($ options ['bwp_exclude_categories']) return explode (',', $ options ['bwp_exclude_categories']); gå i stykker; sak 'post_tag': hvis ($ alternativer ['bwp_exclude_post_tags']) return explode (',', $ options ['bwp_exclude_post_tags']); gå i stykker; case 'genre': hvis ($ options ['bwp_exclude_genre']) return explode (',', $ options ['bwp_exclude_genre']); gå i stykker; returneringsarrangement ("); // POSTS OG PUST POST TYPE 'MOVIE'-funksjonen my_bwp_gxs_exclude_posts ($ query_where_part, $ post_type) $ options = get_option (' my_bwp '); bytt ($ post_type) case' post ' ($ options ['bwp_exclude_posts']) return 'og wposts.ID IKKE IN ('. $ alternativer ['bwp_exclude_posts']. ')'; break; case 'movie': hvis ($ alternativer ['bwp_exclude_movies'] ) return 'og wposts.ID IKKE IN ('. $ alternativer ['bwp_exclude_movies']. ')'; break; case 'side': hvis ($ alternativer ['bwp_exclude_pages']) return 'og wposts.ID IKKE IN ('. $ Alternativer [' bwp_exclude_pages '].') '; Break; return ";
BWP GXS kan også utvides med tillegg moduler å lage egendefinerte XML-sitemaps. Dette betyr at du kan legge til et nettstedkart for en bestemt del av webområdet ditt, som ikke er en del av WordPress 'system, kanskje fordi det ikke er integrert i WordPress på databasenivå, da det bruker forskjellige databasetabeller fra WordPress standard. En god ting er at - gjennom moduler - kan du dra nytte av pluginens database, GZip og Caching-funksjoner.
La oss lage et eksempel: Jeg har et fotogalleri som bruker databasetabeller, og disse tabellene kan ikke nås direkte av WordPress interne funksjoner som get_posts ()
, eller liknende. Så, for å få tilgang til dataene, er det nødvendig å gjøre en direkte forespørsel til et bestemt bord. Selv om hele fotogalleri-delen er utvendig til WordPress, kan vi opprette et XML-sitemap av fotoalbumene som vil bli koblet sammen av BWP GXS i sitemapindeksen. I dette eksemplet, for enkelhet, vil jeg bare lage et sitemap for albumene og ikke for alle enkeltbilder.
Fotogalleriets album er lagret i en photo_gallery
bord:
CREATE TABLE 'photo_gallery' ('album_ID' int (4) IKKE NULL AUTO_INCREMENT, 'album_name' varchar (255) IKKE NULL DEFAULT "," album_nicename "varchar (255) IKKE NULL DEFAULT", "album_date" datetime IKKE NULL DEFAULT '0000 -00-00 00:00:00 ',' album_status 'enum (' publisert ',' utkast ',' privat ') IKKE NULL DEFAULT' utkast ', PRIMARY KEY (' album_ID '), UNIQUE KEY' album_nicename ' album_nicename '));
I stedet lagres de enkelte bildene i et annet bord, men som sagt vil vi ikke legge til bildens webadresser i sitemapet, bare albumadresser. Hvert album har en nettadresse som dette:
http://yoursite.com/photo/album-nicename
Og alle vil bli lagt til det nye fotogalleriet XML-sitemap.
Det anbefales også sterkt - for å opprette gyldige sitemapoppføringer - for å ha en datetime>
felttype i tabellen.
I Sitemap Generator admin side, det er en Modulalternativer seksjon. I Alternativmodulkatalog feltet må du sette hele banen til katalogen som inneholder fotogalleriets sitemodul.
For eksempel kan du opprette en GXS moduler katalog i wp-innhold hvor du må sette modulens PHP-skript. Hver tilpasset sitemap faktisk trenger sin egen modul: en BWP GXS-modul er en enkel .php fil som inneholder en klasse som strekker seg BWP_GXS_MODULE
klasse levert av BWP GXS.
På denne siden kan du også angi antall elementer som skal vises i sitemapet gjennom Få ikke mer enn felt.
Opprett en ny fil som heter photo_gallery.php. Åpne den i din favoritt tekstredigerer og lim inn dette:
set_current_time (); $ Dette-> build_data (); funksjon build_data () global $ wpdb, $ bwp_gxs; / * QUERY TO GET ALBUMS - TABELLEN ER I SAMME ORDPRESS DB, SÅ DU KAN BRUKE HER WPDB WORDPRESS KLASSEN TIL INTERAKT MED DATABASJONEN * / $ album = $ wpdb-> get_results ("VELG album_nicename, album_date FRA photo_gallery BESTILL BY album_date DESC "); / * Hvis tabellen er i en annen database, kan du bruke PHP MYSQL FUNKSJONER * / hvis (! Isset ($ album) || 0 == sizeof ($ album)) returnere false; $ data = array (); for ($ i = 0; $ i < sizeof( $albums ); $i++ ) $album = $albums[$i]; $data = $this->init_data ($ data); // SKIFT DETTE MED KORREKT URL TIL DINE ALBUMS // SENESTE DIN WEBSITE URL $ data ['location'] = 'http://yoursite.com/photo/'. $ Album-> album_nicename; $ data ['lastmod'] = $ this-> format_lastmod (strtotime ($ album-> album_date)); $ data ['freq'] = "ukentlig"; $ data ['priority'] = 1; $ this-> data [] = $ data; returnere sann; ?>
To svært viktige ting:
$ data [ 'plassering']
linje du må erstatte http://yoursite.com
med webadressen til nettstedet ditt, ellers vil modulen kaste en tom sidekartfeil;$ data [ 'freq']
er: alltid
, hver time
, daglig
, ukentlig
, månedlig
, årlig
, aldri
;Endelig lagre det i din wp-innhold / GXS moduler katalog.
Nå er det på tide å fortelle BWP GXS å laste inn modulen vår. Gå tilbake til din BWP GXS utvidet konfigurasjon plugin og legg disse linjene til bwpgxs-utvidet configuration.php fil:
add_action ('bwp_gxs_modules_built', 'my_bwp_gxs_add_modules'); funksjon my_bwp_gxs_add_modules () global $ bwp_gxs; $ bwp_gxs-> add_module ('photo_gallery');
Hvis du bruker ganske permalinks, kan du også ha en fin nettadresse til siden for fotogalleri, noe som helst http://yoursite.com/photo_gallery.xml
.
Legg også til disse linjene, lagre og ikke glem å oppdatere dine innstillinger for Permalink:
add_filter ('bwp_gxs_rewrite_rules', 'my_bwp_gxs_add_rewrite_rules'); fungere my_bwp_gxs_add_rewrite_rules () $ my_rules = array ('photo_gallery.xml' => 'index.php? gxs_module = photo_gallery'); returner $ my_rules;
Det endelige resultatet blir dette (legg merke til det nye tilpassede sitemap photo_gallery.xml):
Hvis du klikker på photo_gallery.xml link, vil du se Photo Gallery XML Sitemap som inneholder alle koblingene til fotogalleriene dine:
Bedre WordPress Google XML Sitemaps er et veldig nyttig plugin. Det har mange funksjoner som vi ikke har tid til å snakke om her mer omfattende, men du kan oppdage dem alle når du har installert den. Det er ekstremt konfigurerbart og utvidbart, slik vi har sett, og lar deg få full støtte for nettstedskart på nettstedet ditt.
Definitivt et veldig godt verktøy for å forbedre sidens synlighet på søkemotorer.
register_setting ()