• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

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

WP其他 奇跡の海 2年前 (2017-12-05) 947次浏览 已收录 0个评论 扫描二维码

方法简介

文章 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' );

然后访问下边的地址,注意替换成你的域名(访问时需以管理员身份登录):

http://example.com?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 改成别名,也就是把固定连接里的 post_id 改成postname
WordPress 最终完美解决文章 固定链接ID 不连续的问题方案
WordPress 最终完美解决文章 固定链接ID 不连续的问题方案
如果因为删除、更新或者其它原因导致文章的 “ID” 不连续了,可以使用上边的那个批量设置的代码重新归位。
只有2000多篇文章但是ID却破万了,太恐怖了!必需得终止了。不过逍遥乐为了SEO考虑没有将ID重新排列,直接将文章ID设置为文章别名。

方法如下:

首先把下边的代码放到主题的 functions.php里:

function Bing_post_name_id(){
	query_posts( 'posts_per_page=-1' );
	while( have_posts() ){
		the_post();
		$post_id = $GLOBALS['post']->ID;
		wp_update_post( array(
			'ID' => $post_id,
			'post_name' => $post_id
		) );
	}
	wp_reset_query();
}
if( $_GET['post_name_id'] == 'yes' ) add_action( 'init', 'Bing_post_name_id' );

放置好代码后,访问一下下边的网站,访问前注意一定要备份数据,以免出错。
文章多的话网页加载会比较慢,因为正在一篇文章一篇文章的修改别名,要耐心等到网页完全加载好才可以。
加载好后,删除之前添加的代码,修改完成,所有文章的别名都会变成自身的 ID.


版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->WordPress 最终完美解决文章 固定链接ID 不连续的问题方案!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址