Google XML Sitemap ist ein leichtgewichtiges Plugin, um die Sitemap für Ihre WordPress-Site automatisch zu generieren. Die generierte Sitemap kann auf verschiedene Arten erstellt werden, z.B. nach Beitragstyp und nach Monat gruppiert. Wenn es jedoch zu viele Beiträge für einen bestimmten Typ in einem Monat gibt, wird die Sitemap sehr groß.

Zum einen ist es für eine Suchmaschine nicht einfach, eine große Datei zu scrapen. Zum anderen, und das ist ebenfalls ein wichtiger Aspekt, kann die Suchmaschine nur 50.000 URLs einer einzigen Datei verarbeiten, was bedeutet, dass URLs, die über diese 50.000 hinausgehen, ignoriert werden. Wenn Sie Google Console verwenden, wird in der Sitemap-Option eine Fehlermeldung angezeigt. Standardmäßig unterstützt Google XML Sitmap nicht die Anzahl der URLs, die in einer Sitemap-Datei enthalten sind.

Sie können andere Plugins wählen, um diese Einstellung zu implementieren. Wie ich jedoch bereits zu Beginn des Artikels erwähnt habe, ist Google XML Sitemap ein leichtgewichtiges Tool, das sehr schnell läuft und nur sehr wenige Ressourcen benötigt. Ich möchte die Codes etwas hacken, um meine Anforderungen zu erfüllen.

WordPress: Hack Google XML Sitemap Plugin, um zu viele URLs in einer Datei zu lösen

Die gehackte Datei ist sitemap-builder.php unter dem Plugin-Ordner. Die Funktion Index() antwortet auf die Generierung der Top-Level-Datei (http:////domain//sitemap.xml).

Ändern Sie den Code entsprechend Ihren Anforderungen. Zum Beispiel möchte ich eine XML eines bestimmten Beitragstyps in mehrere aufteilen. Beiträge vom 1. Tag des Monats bis zum 10. Tag werden in einer Sitemap-Datei angezeigt, vom 11. bis um zu viele URLs in einer Datei zu lösen 20. Tag in einer anderen, und vom 21. bis zum letzten Tag in der dritten Datei. Hier füge ich 2 weitere Dateien für bestimmte Beitragstypen hinzu (standardmäßig gibt es bereits eine).

Beachten Sie, dass das Feld Monat gehackt ist und später verwendet wird. foreach( as ) { if(==/xxx/) { ->AddSitemap(/pt/. /-/. sprintf(/d-d/, ->year, ->month+20), ->GetTimestampFromMySql(->last_mod)); ->AddSitemap(/pt/. /-/. sprintf(/d-d/, ->year, ->month+40), ->GetTimestampFromMySql(->last_mod)); } ->AddSitemap(/pt/. /-/. sprintf(/d-d/, ->year, ->month), ->GetTimestampFromMySql(->last_mod)); } Die Funktion BuildPosts() verarbeitet jede der von der obigen Funktion hinzugefügten Sitemap-Dateien.

Zunächst extrahiere ich das Monatsfeld und stelle es wieder her. if( == /xxx/) { if( >= 21 && <= 32) { -= 20; = 11; = 20; } elseif ( >= 41 && <= 52) { -= 40; = 21; = 31; } else { = 1; = 10; } } Fügen Sie dann während der SQL-Abfrage weitere Bedingungen hinzu. Der Standardwert von dayFirst ist 1 und dayLast ist 31, so dass andere Beitragsarten nicht berücksichtigt werden.

AND DAY(p.post_date_gmt) >= dayFirst AND DAY(p.post_date_gmt) <= dayLast Glückwunsch! Das ist alles, was Sie ändern müssen. Wenn Sie die Sitemap auf der obersten Ebene aktualisieren, können Sie sehen, dass die Sitemap des gehackten Beitragstyps für jeden Monat in 3 Dateien aufgeteilt ist.

Die 1. Sitemap-Datei enthält die Beiträge vom 1. bis zum 10. Tag, die 2. enthält die Beiträge vom 11. bis zum 20. usw. Sie können die Datei entsprechend Ihren Anforderungen ändern.


16 29 7