我正在尝试构建站点地图插件,但被困在一个简单的WordPress循环中。每次我尝试获取URL时,网站崩溃。 get_permalink
造成了循环并使站点崩溃。我已经测试了这些,但没有一个适合我:
get_permalink
the_permalink
get_post_permalink
get_the_permalink
循环:
function fa_sitemap_build() {
// Create/open the file
$file = fopen( get_template_directory() . '/sitemap.xml','wb');
$the_query = get_posts('post_type = page');
foreach ( $the_query as $post ) {
$title = get_the_title($post->ID);
$link = get_permalink($post->ID);
$date = $post->post_modified;
$url .= '
<url>
<title>'.$title.'</title>
<url>'.$link.'</url>
<lastmod>'.$date.'</lastmod>
</url>
';
}
wp_reset_postdata();
$sitemap = '
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
'.$url.'
</urlset>';
// write content to the file
fwrite( $file, $sitemap );
fclose( $file ); // Close the file
}
答案 0 :(得分:0)
传递给get_posts()
的参数必须是一个数组。尝试以下代码。
<?php
$args = array(
'post_type' => 'page',
);
$posts = get_posts( $args );
foreach ( $posts as $post ) {
echo $post->title;
echo '<br />';
echo $post->post_content;
echo '<br />';
echo get_permalink( $post->ID );
}
或者您也可以使用以下代码,它的工作原理相同。
$args = array(
'post_type' => 'page',
);
$posts = get_posts( $args );
foreach ( $posts as $post ) {
setup_postdata( $post );
the_title();
echo '<br />';
the_content();
echo '<br />';
the_permalink();
}
wp_reset_postdata();
参考:
get_posts()
在Codex上的功能