it-swarm.com.de

Wie bekomme ich eine Linkliste für WordPress-Kategorien?

Ich versuche, eine benutzerdefinierte Sitemap für meine WordPress-Blog-Kategorien zu erstellen. Dafür habe ich den folgenden Code in meine functions.php-Datei eingefügt und wenn ich ihn speichere, wird mein Blog weiß. Nichts zeigt sich. Ich habe diesen Code durch FTP entfernt und dann alles wieder in Ordnung.

Jetzt möchte ich diesen Code erstellen und verwenden. Kann mir jetzt jemand helfen, diesen Code zu reparieren?

/* ------------------------------------------------------------------------- *
 *  Custom Dynamic XML Sitemap Generator For Categories
/* ------------------------------------------------------------------------- */
add_action("publish_post", "cat_create_sitemap");
add_action("publish_page", "cat_create_sitemap");
function cat_create_sitemap() {
  $categoriesForSitemap = get_categories(array(
    'hide_empty' => 0, 
    depth => 0, 
    'hierarchical' => false
  ));

  $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
  $sitemap .= '<?xml-stylesheet type="text/xsl" href="sitemap-style.xsl"?>';
  $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

  foreach($categoriesForSitemap as $category) {
    setup_postdata($category);
    $categorydate = explode(" ", $category->category_modified);
    $sitemap .= '<url>'.
      '<loc>'. get_permalink($category->ID) .'</loc>'.
      '<priority>1</priority>'.
      '<lastmod>'. $categorydate[0] .'</lastmod>'.
      '<changefreq>daily</changefreq>'.
    '</url>';
  }
  $sitemap .= '</urlset>';
  $fp = fopen(ABSPATH . "custom-cat-sitemap.xml", 'w');
  fwrite($fp, $sitemap);
  fclose($fp);
}
2
Muhammad Hassan

Der erste Fehler, den ich sehe, ist ein Syntaxfehler:

depth => 0

sollte sein

"depth" => 0

Der zweite Fehler ist, dass Sie ein Kategorieobjekt wie ein Post-Objekt verwenden. Keine dieser Zeilen funktioniert:

Es sind keine Post-Daten zum Einrichten vorhanden. Diese Zeile entfernen:

setup_postdata($category);

Ein Kategorieobjekt hat keine category_modified-Eigenschaft. Vielleicht brauchst du das Datum des letzten veröffentlichten Beitrags in der Kategorie (das ist eine andere Frage) ???

//Not valid property
$category->category_modified;

get_permalink() ist für Posts, für Kategorien verwenden Sie stattdessen get_category_link(). Außerdem ist $ category-> ID keine gültige Eigenschaft eines Kategorieobjekts. Verwenden Sie stattdessen $ category-> term_id:

//Incorrect
get_permalink($category->ID);

//Correct
get_category_link($category->term_id);
3
cybmeta