利用宝塔面板+定时计划任务生成xml文件,百度搜索资源平台的普通收录和死链提交工具均不再支持索引型 sitemap 文件(即 xml 文档嵌套 xml 文档),所以我们非常有必要生成一个百度支持(符合百度要求)的 xml 地图文件。如果你的 WordPress 站点没有任何类型的自定义文章,而且服务器上也安装有宝塔 Linux 面板,那么创建百度支持的 xml 地图文件将会变得非常简单,仅需要两个步骤即可
1、将以下代码添加到 sitemap.php 文件(文件名可自定义),并将该文件上传到站点根目录中。
<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 1000;
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'
?>
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?>-->
<url>
<loc><?php echo get_home_url(); ?></loc>
<lastmod><?php $ltime = get_lastpostmodified('GMT');$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<?php
/* 输出普通文章 POST */
$myposts = get_posts("numberposts=" . $posts_to_show );
foreach( $myposts as $post ) { ?>
<url>
<loc><?php the_permalink(); ?></loc>
<lastmod><?php the_time('c') ?></lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<?php } /* 普通文章循环结束 */ ?>
<?php
/* 输出页面 */
$mypages = get_pages();
if(count($mypages) > 0) {
foreach($mypages as $page) { ?>
<url>
<loc><?php echo get_page_link($page->ID); ?></loc>
<lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<?php }} /* 页面循环结束 */ ?>
<?php
/* 输出普通文章分类 */
$terms = get_terms('category', 'orderby=name&hide_empty=0' );
$count = count($terms);
if($count > 0){
foreach ($terms as $term) { ?>
<url>
<loc><?php echo get_term_link($term, $term->slug); ?></loc>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<?php }} /* 普通文章分类循环结束 */?>
<?php
/* 输出普通文章标签(可选) */
$tags = get_terms("post_tag");
foreach ( $tags as $key => $tag ) {
$link = get_term_link( intval($tag->term_id), "post_tag" );
if ( is_wp_error( $link ) )
return false;
$tags[ $key ]->link = $link;
?>
<url>
<loc><?php echo $link ?></loc>
<changefreq>monthly</changefreq>
<priority>0.4</priority>
</url>
<?php } /* 普通文章标签循环结束 */ ?>
</urlset>
代码特别说明:
代码来自张戈博客分享的『WordPress 免插件生成完整站点地图(sitemap.xml)的 php 代码』,并改正 GMT 错误。
第 5 行代码中的$posts_to_show 就是显示多少篇文章,如果想要全部显示完,直接将其改为 10000 甚至更大的值。
第 9 行代码意义不大,只是说明这个代码来自张戈博客。
2、登录宝塔 Linux 面板 >> 计划任务 >> 任务类型选择 Shell 脚本 >> 任务名称可随意 >> 执行周期建议每天凌晨执行 1 次即可 >> 脚本内容输入以下代码(PS:记得修改代码中的名称及路径哦) >> 点击【添加任务】按钮即可。
如果站点是 http 则添加以下代码:
wget -O /www/wwwroot/wp.yigujin.wang/sitemap.xml http://wp.yigujin.wang/sitemap.php
如果站点是 https 则添加以下代码:
wget -O /home/wwwroot/wp.yigujin.wang/sitemap.xml --no-check-certificate http://wp.yigujin.wang/sitemap.php