关于文章ID不连续问题。

  4,118 ℃

CONTENT

一,在禁止自动保存、禁用修订版本、之后。使用函数

//自动设置新文章别名为文章数+1
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' => wp_count_posts()->publish ));
		// 重新挂载该函数
		add_action('save_post', 'using_id_as_slug' );
	}
}
//自动设置新文章别名为文章数+1

if判断文章修订版本无效。

具体:在新建文章时,文章别名为已发文章数。即 wp_count_posts()->publish  ,此时编辑文章,文章固定链接为wp_count_posts()->publish -2.html

发布文章之后,函数设置文章别名为此时的已发文章数,即之前的wp_count_posts()->publish+1

但在重新编辑文章并保存之后,会再次判断并修改文章别名为已发文章数+1。

例如此文章,此时编辑,固定链接显示为https://langzi.xin/10-2.html 因为在这篇文章之前已有10篇,别名此时为wp_count_posts()->publish ,固定链接为postname,与第10篇文章重复,所以会命名为10-2。

18/05/07 19:34 更新,文章发布之后,自动修改postname为wp_count_posts()->publish +1也就是11,固定链接也为11。

一下仍需要测试,且本次修订之后文章postname与固定链接为 未知。预测:11

 

需要改动:函数if判断规则。若文章为已发表,则销毁。

需要测试:新建文章而不编辑时,别名为除本文章外,已发文章数。固定链接暂不知。

记录时间:18/05/07  19:33

 

更新时间:18/05/07 20:54

新建文章而不编辑时,别名为除本文章外,已发文章数。固定链接为 文章数-2

改用函数

//自动设置新文章别名为文章数+1
function Bing_post_id_continuous( $post_id, $post, $update ){     //此处参数 $post_id 本为 $id
	if( $update || $post->post_status != 'publish' ) return;
	$action = 'save_post';     //此处参数 save_post 本为 save_post_post
	$func = 'Bing_post_id_continuous';
	remove_action( $action, $func, 10 );
	wp_update_post( array(
		'ID' => $post_id,     //此处参数 $post_id 本为 $id
		'post_name' => wp_count_posts()->publish + 1
	));
	add_action( $action, $func, 10, 3 );
}
add_action( 'save_post', 'Bing_post_id_continuous', 10, 3 );     //此处参数 save_post 本为 save_post_post
//自动设置新文章别名为文章数+1

判断类型为 已发布的文章if( $update || $post->post_status != 'publish' ) return;

修改ID为post_id

修改别名为已发布数量+1

若代码可行,则本文章别名和固定链接都为11/若失败应为12-2

为12-2

此次新建文章ID为13,此次更新后应为13-3,13-2已被12文章占用

21:16  测试结果失败,后发现文件未替换。再次修改代码并保存之后测试成功

 

更新于2018/05.15 14.55

文章状态值:

1、pending:待审

2、draft:草稿

3、auto-draft:自动保存的草稿

4、inherit:修订版本

5、trash:回收站

6、publish:已发布

7、future:定时

8、private:私有

 

获取草稿数量 lz_draft =

获取自动草稿数量 lz_autofraf =

判断,当文章状态为draft和autodraf时,修改postname为' lz lz_draft + lz_autofraf + 1'

(此处应为字母+数字,即lz123)

判断,当文章状态为publish时,跳过。

 

终极解决办法详见新文章

WordPress文章ID连续的最终解决方法。

前面的文章写到了,代码复制到主题的functions.php下。注释很清楚,具体原理自行理解。 //自动设置新 […]

评论: | NOTHING

暂无评论...