it-swarm.dev

Como lista de links Categorias WordPress?

Eu estou tentando fazer um sitemap personalizado para minhas categorias de blogs do WordPress. Para isso eu adicionei o código abaixo no meu arquivo functions.php e quando eu salvá-lo, meu Blog fica branco. Nada está aparecendo. Eu removi este código, passando por FTP e, em seguida, tudo voltou a ficar bem.

Agora eu quero fazer e usar esse código. Agora alguém pode me ajudar a consertar esse código?

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

Erro de punho que vejo é um erro de sintaxe:

depth => 0

deveria estar

"depth" => 0

Segundo erro é que você está usando um objeto de categoria como um objeto de postagem. Nenhuma dessas linhas funcionará:

Não há dados de postagem para configuração. Remova esta linha:

setup_postdata($category);

Um objeto de categoria não possui uma propriedade category_modified. Talvez você precise da data do último post publicado na categoria (essa é outra pergunta) ???

//Not valid property
$category->category_modified;

get_permalink() é para posts, para categorias use get_category_link(). Além disso, $ category-> ID não é uma propriedade válida de um objeto de categoria, use $ category-> term_id em vez disso:

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

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