我正在尝试为我的WordPress博客类别创建自定义网站地图。为此,我在函数中添加了以下代码。php文件,当我保存它时,我的博客会变成白色。什么都没有出现。我通过FTP删除了这段代码,然后一切又恢复正常。
现在我想制作并使用这个代码。现在有人能帮我修复这个代码吗?
/* ------------------------------------------------------------------------- *
* 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);
}
最合适的回答,由SO网友:cybmeta 整理而成
我看到的第一个错误是语法错误:
depth => 0
应该是
"depth" => 0
第二个错误是,您使用的是类别对象,如post对象。这些线路都不起作用:
没有要设置的post数据。删除此行:
setup_postdata($category);
类别对象没有category\\u modified属性。也许你需要该类别上最后一篇发表文章的日期(这是另一个问题)???
//Not valid property
$category->category_modified;
get_permalink()
用于帖子,用于类别
get_category_link()
相反此外,$category->ID不是类别对象的有效属性,请改用$category->term\\u ID:
//Incorrect
get_permalink($category->ID);
//Correct
get_category_link($category->term_id);