因为我主要是用来生产TXT文档的,用来通过curl命令行给百度熊掌号提交站点历史数据的,所以只需要文章链接即可,具体的代码如下:
- <?php
- require(‘../wp-blog-header.php’);
- header(“Content-type: text/xml”);
- header(‘HTTP/1.1 200 OK’);
- $posts_to_show = 6000; //这里的数字决定获取多少个文章链接,可根据自己站点实际情况来具体填写
- 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/”>’
- ?>
- <?php
- /* 文章页面 */
- $myposts = get_posts( “numberposts=” . $posts_to_show );
- foreach( $myposts as $post ) { ?>
- <url>
- <loc><?php the_permalink(); ?></loc>
- </url>
- <?php } ?>
- </urlset>
将上述代码保存为编码为UTF-8的php文件,比如以site.php命名上传到网站根目录里待用。
注意:上述代码的posts_to_show数值越大,运行时对服务器负载造成的压力也越大,所以运行这个代码时明月建议大家选在凌晨以后最合适,不要跟明月一样在中午,成功率连5%都没有。
在服务器的控制台终端里运用wget指令结合这个PHP代码文件即可生成指定的txt文档,里面就是当前站点所有的文章链接(静态化)了,具体如下:
- #通过wget命令实时生成全站链接到指定的TXT文档里
- wget -O /home/wwwroot/www.mydomain.com/site.txt —no-check-certificate https://www.mydomain.com/site.php
- #其中的 –no-check-certificate 参数是因为明月的站点是HTTPS的,如果是HTTP站点可以去掉这个参数。
- #因为这个命令运行后需要调用数据库数据生产伪静态化链接,所以会瞬间造成服务器负载飙升,请注意使用时间段。
运行完成后,就会在网站根目录下生成一个site.txt的文档,这时再通过纯文本编辑软件(如:EditPlus等)批量搜索替换掉里面重复的XML标记代码即可。
这样下来就获取了 WordPress 站点全站文章的链接到TXT文件里了,至于说这个TXT文件有什么用,就明月的需求来说也就是这次百度熊掌号提交站点历史数据要用到而已,并且这个方法是针对站点文章数量在1000以上时才需要用到的,当然文章数量小也可以用,无非是运行起来效率更高而已。不过,就明月的感觉当文章数量达到10000以上的时候,这个方法就不适用了,会造成服务器卡死甚至宕机的,当然有那么多文章的网站一定会有专业技术人员的,一般也就不需要站长亲自操刀了。