缙哥哥的博客
与你分享我的点点滴滴生活

WordPress 纯代码获取所有文章&页面&分类&标签的静态化链接

由于缙哥哥分享的东西越来越多(杂),分类就越来越多,级数也多起来,所以为了更好的展示URL地址,近期准备将所有文章的固定链接,从原来的

/%category%/%post_id%.html

改为

/%post_id%.html

这样能让所有文章链接统一起来,并且不再老长老长;还有一个好处就是文章链接二维码也能简单起来。但是更改 URL 是 SEO 的大忌,为此,缙哥哥参考百度的网站改版规则,以最大的保留原来的收录。

获取所有链接

将下方代码复制到utf8的文件里,分别命名为post.php(文章)、page.php(页面)、category.php(分类)、tag.php(标签),放置在网站根目录即可。

获取所有文章链接代码↓

<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 2000; //缙哥哥提示:这里的数字决定获取多少个文章链接,可根据自己站点服务器实际情况来具体填写,由于缙哥哥只有1000+文章,所以设置2000
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 缙哥哥的博客(http://www.dujin.org)-->
<?php
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) { ?>
 <url>
 <loc><?php the_permalink(); ?></loc>
 </url>
<?php }?>
</urlset>

获取所有页面链接代码↓

<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 100; //缙哥哥提示:页面一般不会很多,可根据自己的实际情况修改。
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 缙哥哥的博客(http://www.dujin.org)-->
<?php
$mypages = get_pages();
if(count($mypages) > 0) {
 foreach($mypages as $page) { ?>
 <url>
 <loc><?php echo get_page_link($page->ID); ?></loc>
 </url>
<?php }?>
</urlset>

获取所有分类链接代码↓

<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 500; //缙哥哥提示:自己根据需求修改
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 缙哥哥的博客(http://www.dujin.org)-->
<?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>
 </url>
<?php }?>
</urlset>

获取所有标签链接代码↓

<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 2000; //缙哥哥提示:这里的数字决定获取多少个文章链接,可根据自己站点服务器实际情况来具体填写,由于缙哥哥只有1000+文章,所以设置2000
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 缙哥哥的博客(http://www.dujin.org)-->
<?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>
 </url>
<?php }?>
</urlset>

然后,进入服务器,以 root 账号使用 wget 指令结合这个 PHP 代码文件即可生成指定的 TXT 文档。由于缙哥哥只修改文章链接,这里只以文章指令示例,页面、分类、标签请参考修改。

wget -O /***/***/www.dujin.org/post.txt --no-check-certificate https://www.dujin.org/post.php

运行之前需要注意的是自己的网站路径要搞清楚,txt文件存放路径也要搞清楚;其中的 –no-check-certificate 参数是因为缙哥哥的博客是 HTTPS 的,如果是 HTTP 站点可以去掉这个参数。

若是你的网站设置的360网站卫士或是其他 CDN 服务,你还需要使用 VIM 指令修改 hosts 文件,将你的网站域名指向自己的服务器IP地址。

vim /etc/hosts

Linux 文本编辑器 Vim “真 · 简单”使用教程

运行完成后,就会在网站根目录下生成一个 post.txt 的文档。

这时再通过纯文本编辑软件(如:Emurasoft文本编辑器)批量搜索替换掉里面重复的XML标记代码即可。

EmEditor 32&64位 v17.4.2版下载,附注册码

好了,到此为止就已经获得所有的URL链接了,有问题欢迎留言交流。

赞(0) 打赏
转载请注明来源及链接:缙哥哥 » WordPress 纯代码获取所有文章&页面&分类&标签的静态化链接
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

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

支付宝扫一扫打赏

微信扫一扫打赏