我想创建一个只包含父页面的网站地图。
这是我通常仅用于获取父页面的代码:
$args = array(
\'post_type\' => \'page\',
\'post_parent\' => 0,
\'orderby\' => \'rand\',
\'posts_per_page\' => 3,
\'post_status\' => array(\'publish\'),
);
$parents = new WP_Query($args);
我使用了这个网站地图代码
answer:
add_action( "save_post", "eg_create_sitemap" );
function eg_create_sitemap() {
$postsForSitemap = get_posts( array(
\'numberposts\' => -1,
\'orderby\' => \'modified\',
\'post_type\' => array( \'post\', \'page\' ),
\'order\' => \'DESC\'
) );
$sitemap = \'<?xml version="1.0" encoding="UTF-8"?>\';
$sitemap .= "\\n" . \'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\' . "\\n";
foreach( $postsForSitemap as $post ) {
setup_postdata( $post );
$postdate = explode( " ", $post->post_modified );
$sitemap .= "\\t" . \'<url>\' . "\\n" .
"\\t\\t" . \'<loc>\' . get_permalink( $post->ID ) . \'</loc>\' .
"\\n\\t\\t" . \'<lastmod>\' . $postdate[0] . \'</lastmod>\' .
"\\n\\t\\t" . \'<changefreq>monthly</changefreq>\' .
"\\n\\t" . \'</url>\' . "\\n";
}
$sitemap .= \'</urlset>\';
$fp = fopen( ABSPATH . "sitemap.xml", \'w\' );
fwrite( $fp, $sitemap );
fclose( $fp );
}
它获取所有页面,所以它不是我想要的,并生成了一个网站地图。我的WP根目录中的xml
(it was not there before this).
然后我修改了,但它不工作-它仍然返回所有页面。所以我把它从网站地图上删除了。xml在我的根目录中,但我得到一个404错误。
为什么?怎么会这样?