百度搜索资源平台的普通收录和死链提交工具均不再支持索引型 sitemap 文件(即 xml 文档嵌套 xml 文档),所以我们非常有必要生成一个百度支持(符合百度要求)的 xml 地图文件。如果你的 WordPress 站点没有任何类型的自定义文章,而且服务器上也安装有宝塔 Linux 面板,那么创建百度支持的 xml 地图文件将会变得非常简单,仅需要两个步骤即可(PS:演示站点没有自定义文章,使用的是 Nginx)。

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'); ?> Diy By 张戈博客(https://zhang.ge)-->
<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

如果设置的执行周期是凌晨又想马上知道效果,我们可以在成功添加了计划任务之后可以马上点击该任务对应的“执行”链接按钮让其生成 sitemap.xml 文件。

经过老古的测试,根据以上两个步骤操作是可以自动生成 sitemap.xml 文件的,而且该文件格式是符合百度搜索资源平台中的普通收录和死链提交的 xml 文件。如果你的站点还没有符合百度要求的 xml 站点地图文件,建议参考本文折腾。如果你的 WordPress 站点有自定义文章,而且想让自定义文章出现在 xml 文件中,建议参考『WordPress 纯代码生成百度支持的 XML 站点地图(含自定义文章)』这篇文章操作。

来源:boke112联盟 – https://boke112.com/post/8015.html

本文地址:https://blog.csdn.net/boke112/article/details/107294447