修改原因:
本站之前为了让文章ID连续看起来美观,踩了一个大坑。
就是文章链接使用了别名/%postname%.html 作为文章固定链接,当然别名是中文的,然后每一个都去手动自己修改为连续的数字ID。
导致后面文章越来越多,发现每次都去改ID,太消磨时间了,而且要连续文章ID还要每次都去记住上一个ID是什么,十分费神。
达到目的:
现在想把文章固定链接命名方式/%postname%.html,改为:/%post_id%/.html,让文章ID作为文章链接名称。
我这个时候去后台修改为/%post_id%/.html以后发现,以前的自定义别名文章全部都自动换为了文章ID,那样就会出现一个很严重的事情:百度搜索引擎收录的文章全部会出现404或者已经收录的文章对不上现在的文章,那样肯定不行的,严重直接导致网站被K,这样的体验对搜索引擎和用户来说都是非常糟糕的事情,所以万万不可采取此举。
亲测解决方案:
下面给大家说一个不改变也不影响之前的文章的链接,新发布的文章自动使用文章ID作为文章别名的亲测方法,非常牛逼克拉斯。
1.后台设置固定链接依旧为别名不能改变:/%postname%.html或者/%postname% ,看自己之前有没有对文章链接+html 选择。
2.将以下代码加入到主题下面的functions.php文件中,注意是要加在<?php 标签之后。
/**
* WordPress新文章自动使用文章ID作为别名
* 作用:即使你设置固定连接结构为 /%postname% 或者 /%postname%.html,新发布的文章仍旧自动以文章ID作为文章别名。
*/
add_action( 'save_post', 'using_id_as_slug', 10, 2 );
function using_id_as_slug($post_id, $post){
global $post_type;
if($post_type=='post'){ //只对新文章生效
// 如果是老文章的版本,不生效。
if (wp_is_post_revision($post_id))
return false;
// 取消挂载该函数,防止无限循环
remove_action('save_post', 'using_id_as_slug' );
// 使用文章ID作为新文章的别名
wp_update_post(array('ID' => $post_id, 'post_name' => $post_id ));
// 重新挂载该函数
add_action('save_post', 'using_id_as_slug' );
}
}
3.发布测试,就算设置了以别名/%postname%.html作为文章固定链接,依旧文章别名/%post_id%/.html显示为文章ID作为固定链接。
你可能感兴趣:
THE END
暂无评论内容