关注VPS服务器
相关知识分享

WordPress免插件生成XML网站地图_符合百度要求的XML地图

看到百度站长工具的消息:百度不支持索引型XML网站地图,已提交的索引型文件要及时删除。百度官方提到的索引型XML网站地图是很多地图插件生成的那种网站地图,比如 Google XML Sitemaps插件。听说百度这么做是为了打击一些恶意排名的做法。好在即使不用插件我们也可以WordPress免插件生成XML网站地图,而且这个方式比较方便,只要一开始设置好了符合百度要求的XML地图文件,后面就无需人工干预,完全可以自动化操作。

下图是百度不予处理的索引型xml网站地图,只要你还想继续依靠百度抓取收录,这种情况的网站地图要赶紧修改了。

索引型XML地图文件不被百度收录

索引型XML地图文件不被百度收录

WordPress网站地图代码

虚拟主机无法实现,换成云服务器就行了。

国内服务器:阿里云腾讯云(都有代金券,付款时抵用省钱)

国外服务器:点我登陆 Vultr 主机

将以下代码添加到 sitemap.php 文件(文件名不要和我这个一样),使用UTF-8 编码,别用记事本保存容易出错,用 dreamweaver、Notepad++,Editplus都行。

相关内容:常用网站文件编辑软件 Dreamweaver、Notepad++、Editplus 介绍及如何选择

上传到站点某个目录中。

<?php
require('../wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 10000;
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
/* 文章 */
$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>

说明:代码来源自https://zhang.ge/4554.html,原作者张戈博客。同时参考了明月登楼的https://www.imydl.com/wp/5688.html,boke112的https://boke112.com/post/8015.html,张戈博客的代码有一点小问题,老魏这里直接执行会出错。参考了后面 2位博主的修改后顺利执行。

下面是对代码的解释:

1、代码开头有张戈博客的版权信息,这个对生成地图文件没什么用。

2、第5行的 $posts_to_show = 10000; 代表执行的文章数量,建议比目前已有文章数量大一些,这样就可以生成全部文章URL的地图文件了。

3、关键代码解释

<lastmod>文件最后修改时间。首页就是首页最后更新时间,文章页就是文章页最后更新时间。

<changefreq>更新频率。比如文章的<changefreq>monthly</changefreq>是月度更新,如果你经常修改已经发布的文章,那么可以考虑 daily 或 weekly,谨慎!

<priority>当前文件优先权。在上面代码中首页的优先权是1.0,最大的。文章0.6,页面0.6,分类0.8,标签0.4。这里大家一定要根据你的网站情况自行判断是否修改权重数字,不懂就别改,谨慎!

4、代码文件的存放位置不同路径也不同,注意相对目录位置。

  • sitemap.php文件放到网站根目录,要注意上面代码第2行,应该使用 require(‘./wp-blog-header.php’);
  • 文件放到网站根目录下面的某个目录中,第2行应该用 require(‘../wp-blog-header.php’);

5、使用本页面的代码经过老魏测试是有效的。如果照搬张戈博客的代码执行会出错,生成文件大小是 0,还有别的错误提示,总之就是无法正常生成网站地图文件。

网站地图php文件执行

有了代码还需要执行,我们不可能手动去执行这个文件,万一有几天忘记手动操作了就麻烦了(网站地图一直不更新)。如果你用了 linux服务器,可以借用系统自带的定时计划功能来实现定时自动更新,解放双手。

不得不提的服务器安全问题如下:

sitemap.php这个动态文件的名称和实际目录不能让别人知道。所以文件名要改成只有你自己知道的名字,路径放到网站中只有你自己知道的目录中。为了防止目录被遍历查询搜索到,还可以通过赋予 root 群组限制访问和获取用户权限。

以现在国内市场占有率比较高的宝塔面板为例,登录面板的计划任务,按照下面提示设置:

任务类型:Shell 脚本;
任务名称:随便;
执行周期:根据你网站文章更新频率,每次文章更新执行,或者每天凌晨访问人数少时更新也行;
脚本内容输入以下代码,修改代码中的网站实际路径及文件名称,添加任务。

域名前缀是http 添加代码:

wget -O /www/wwwroot/网站目录/sitemap.xml https://域名/sitemap.php

域名前缀是https 添加代码:

wget -O /www/wwwroot/网站目录/sitemap.xml --no-check-certificate https://域名/sitemap.php
宝塔面板计划任务执行Shell脚本

宝塔面板计划任务执行Shell脚本

网站地图自动生成验证

1、如果想马上知道XML文件生成结果,添加计划任务后可以马上点击执行生成 sitemap.xml 文件。等待2分钟后点击“日志”查看,如果看到如下图所示结果就是成功了。

注意:要先看到下图红框中的多行执行结果,再看到显示 successful时候就是成功了。再把图中的 /域名/sitemap.xml 扔到浏览器中打开试试能否看到一行行的XML文件格式。比如魏艾斯笔记网站地图 这种形式的就可以了。

宝塔面板计划任务shell脚本执行结果

宝塔面板计划任务shell脚本执行结果

2、百度站长工具的站点管理 > 普通收录 > 资源提交 > sitemap中,勾选并删除原来的文件,那里有个手动更新文件按钮,不过系统会提示先删除再提交新文件。删除并提交网站地图url后等待一会儿再去查看,如果状态显示“正常”就OK了。

百度站长工具sitemap提交

百度站长工具sitemap提交

WordPress无插件生成网站地图总结

1、生成的网站地图文件适用于任何搜索引擎抓取

2、测试百度搜索资源平台抓取成功后,停用并卸载 wordpress地图插件,给 wordpress“减负”。

3、网站地图的作用是给搜索引擎提供网站结构和及时传递更新的内容,对于网站seo优化有好处,符合百度要求的XML地图文件工作要重视起来。

4、外贸网站等面向国外访客等网站继续用Google XML Sitemaps插件吧。教程:sitemap 插件 Google XML Sitemaps 设置

5、懂代码的朋友可以修改这段代码,适用于任何php程序。

赞(1) 打赏
允许转载,保留出处:魏艾斯笔记 » WordPress免插件生成XML网站地图_符合百度要求的XML地图

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏