WordPress 最终完美解决文章 固定链接ID 不连续的问题方案

一点优化 2019年12月25日18:01:58
评论
1.1K看 1501字
广告也精彩

(转自久伴博客)文章 ID 不连续是很多 “强迫症” 博主的烦恼,尤其是使用了文章 ID 作为固定连接之后,每篇文章的 ID 并不连续,非常不好。
从原因来看,文章 ID 不连续主要是因为自动保存的文章、媒体、页面和其它文章类型占用了 ID 导致的,网上的解决方法一般是强制的禁止自动草稿、不在媒体库上传媒体、不建立页面等等,但这种方法会导致使用上的不便利,而且很有局限性。

解决方案

本文说的方法也是治标不治本,但却能比较好的解决链接上的 ID 不连续这个问题。这个方法就是利用别名,自动给文章设置一个别名,别名按顺序递增,然后把固定连接设置成别名。

批量设置

首先,如果你之前已经有文章了,需要根据顺序重新排列,设置一下别名,从 1 开始递增。批量设置别名可以把下边的代码添加到 functions.php 里边:
function Bing_post_id_continuous_query(){
set_time_limit( 0 );
remove_action( 'publish_post', 'Bing_post_id_continuous' );
query_posts( 'posts_per_page=-1' );
$arr = array();
while( have_posts() ){
the_post();
$post_id = $GLOBALS['post']->ID;
$arr[] = $post_id;
}
wp_reset_query();
$arr = array_reverse( $arr );
$i = 1;
foreach( $arr as $post_id ){
wp_update_post( array(
'ID' => $post_id,
'post_name' => $i++
) );
}
}
if( $_GET['post_id_continuous_query'] == 'yes' && current_user_can( 'level_10' ) ) add_action( 'init', 'Bing_post_id_continuous_query' );
然后访问下边的地址,注意替换成你的域名(访问时需以管理员身份登录):
https://jiub.ren/?post_id_continuous_query=yes
文章多的话网页加载会很慢,耐心等待加载完,加载好后,别名也就批量设置好了。
注意:此代码用完之后不用删除,留着之后有可能还需要用。
新文章自动设置
老文章设置好了,接下来就要给新文章自动设置别名了,只需要把下边的代码添加到主题的 functions.php 即可:
function Bing_post_id_continuous( $id, $post, $update ){
if( $update || $post->post_status != 'publish' ) return;
$action = 'save_post_post';
$func = 'Bing_post_id_continuous';
remove_action( $action, $func, 10 );
wp_update_post( array(
'ID' => $id,
'post_name' => wp_count_posts()->publish + 1
));
add_action( $action, $func, 10, 3 );
}
add_action( 'save_post_post', 'Bing_post_id_continuous', 10, 3 );
添加好后,每发布一篇文章,别名都会自动设置成当前发布文章的数量加 1.

提示
如果因为删除、更新或者其它原因导致文章的 “ID” 不连续了,可以使用上边的那个批量设置的代码重新归位。

wordpress文章ID连续及ID重新排列的方法

  • SEO话题
  • 这是我的QQ群扫一扫
  • weinxin
  • wp开发交流
  • 我的QQ交流群扫一扫
  • weinxin
wordpress搭建站中站(栏目站)教程 基础建站教程

wordpress搭建站中站(栏目站)教程

wordpress如何搭建栏目站?也就是我们所说的站中站。wordpress因为文章数据库表单只有一个,所以一般会比较卡,当然也有一些SEO站长因为站中站权重比较集中,所以使用站中站的方式做优化,还有...
修改WordPress数据库前缀完后台无法登陆教程 WP综合教程

修改WordPress数据库前缀完后台无法登陆教程

一点优化操作完上一个如何修改WordPress数据库前缀修改完之后,发现网站后台无法登陆了,百思不得其姐,然后在百度的帮助下,解决了这个问题,后续的教程请看下面。 如果你将数据库导入到运营中的服务器登...
如何修改WordPress数据库前缀 WP综合教程

如何修改WordPress数据库前缀

之前有一点优化有出一个分布式缓存的教程,但是那个分布式缓存会导致多个网站在一个服务器下面,数据库相同表前缀导致出现错误,所以这里一点优化在这边出三个WordPress修改表前缀的方法,分别是插件,安装...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: