it-swarm.dev

Come ottenere l'elenco dei collegamenti delle categorie WordPress?

Sto cercando di creare una sitemap personalizzata per le mie categorie di blog WordPress. Per questo ho aggiunto il codice seguente nel mio file functions.php e quando lo salvo, il mio Blog diventa bianco. Non sta arrivando nulla Ho rimosso questo codice passando attraverso FTP e poi tutto è andato bene.

Ora voglio creare e utilizzare questo codice. Ora qualcuno può aiutarmi a risolvere questo codice?

/* ------------------------------------------------------------------------- *
 *  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

L'errore di pugno che vedo è un errore di sintassi:

depth => 0

dovrebbe essere

"depth" => 0

Il secondo errore è che stai usando un oggetto categoria come un oggetto post. Nessuna di queste linee funzionerà:

Non ci sono dati di post da configurare. Rimuovi questa linea:

setup_postdata($category);

Un oggetto categoria non ha proprietà category_modified. Forse hai bisogno della data dell'ultimo post pubblicato sulla categoria (questa è un'altra domanda) ???

//Not valid property
$category->category_modified;

get_permalink() è per i post, per le categorie usa invece get_category_link(). Inoltre, $ category-> ID non è una proprietà valida di un oggetto categoria, utilizza invece $ category-> term_id:

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

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