欢迎光临
我们一直在努力
扫描二维码在手机上浏览
WordPress相关

WordPress文章ID不连续解决的终极方法

WordPress的版本修订历史(revision)和自动保存(autosave)功能会非常讨厌的增加文章ID的数字,会造成连续的两篇文章,ID数值可能会相差很多,让我们这些希望文章ID连续的人感到非常不舒服。然而,我们可以通过多种方式来禁用这个自动保存和版本修订的功能,网上已经有很多wordpress禁用自动草稿和版本修订的文章,先附上一个我之前用的吧。

原先方法

<?php
/*
Plugin Name: Disable Revisions and Autosave
Plugin URI: http://exper.3drecursions.com/2008/07/25/disable-revisions-and-autosave-plugin/
Description: Disable the Revisions and Autosave functions. By <a href="http://exper.3drecursions.com/">Exper</a>. Original idea and code by <a href="http://lesterchan.net/wordpress/2008/07/17/how-to-turn-off-post-revision-in-wordpress-26/" target="_blank">Lester Chan</a> and <a href="http://www.untwistedvortex.com/2008/06/27/adjust-wordpress-autosave-or-disable-it-completely/" target="_blank">Untwisted Vortex</a>.
*/

register_activation_hook(__FILE__, 'wp_disable_revisions_install');

/**
 * Delete all entries of revisions in database
 * 
 * @global $wpdb WordPress database connection
 * @return $wpdb->query
 */
function wp_disable_revisions_install() {
	global $wpdb;

	$sql = "
		DELETE
			`a`, `b`, `c`  
		FROM
			`" . $wpdb->prefix . "posts` `a`  
		LEFT JOIN
			`" . $wpdb->prefix . "term_relationships` `b` ON (`a`.`ID` = `b`.`object_id`)  
		LEFT JOIN
			`" . $wpdb->prefix . "postmeta` `c` ON (`a`.`ID` = `c`.`post_id`)  
		WHERE
			`a`.`post_type` = 'revision'
	";
	// Clean tables
	$wpdb->query($sql);
	// Optimize tables
	$wpdb->query("OPTIMIZE TABLE `" . $wpdb->prefix . "postmeta`, `" . $wpdb->prefix . "posts`, `" . $wpdb->prefix . "term_relationships`");
}

/**
 * Set define WP_POST_REVISIONS to zero
 */
define ('WP_POST_REVISIONS', false);

/**
 * Remove revisions actions in post.php
 */
remove_action('pre_post_update', 'wp_save_post_revision');

function disable_autosave() {
wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disable_autosave' );
?>

把上面的代码复制,最后保存成 disable-revisions-and-autosave.php ,上传到插件目录启用即可。

最新方法

上面的禁用自动保存和修订版本,新建文章时会产生无用的auto-draft记录。之前网上的办法都是采用修改WordPress原文件的方法屏蔽自建auto-draft记录,但是似乎目前没有适合3.5之后版本的办法,而且每次升级都需要修改原文件,既麻烦又不安全。

其实直接操作数据库更简单,原理为:如果新建文章或上传图片就获取数据库中最后一条有用记录(状态为publish、draft或private的文章或状态为inherit且类型为attachment的行)的ID,并把之后的无用行(状态为auto-draft的文章,状态为inherit且类型为rivision的文章)删除掉,再重设自增。这样无论如何新建文章,数据库中最多有且仅有一条auto-draft记录(WordPress刚刚创建的行,保存之后状态变为publish、draft或private),这样文章ID就能连续了。

2019.12.08更新

今天在修改文章的时候发现禁用修订版本不能用了,于是修改了禁用修订版本的代码,在5.3.0版本上使用正常。

隐藏内容,您需要满足以下条件方可查看
月费会员年费会员终身会员付费查看

只要将上面的代码插入到主题functions.php中就可以了,以上的代码考虑了使用媒体库和自定义菜单的可能,如果需要文章ID完全连续,就不要使用WordPress内置的媒体库功能和自定义菜单功能。

THE END
历史上的今天
十二月
8
    哇哦~~~,历史上的今天没发表过文章哦
标签
喜欢就支持一下吧!!!
点赞0打赏分享
版权声明
本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自:灵阳星空 » WordPress文章ID不连续解决的终极方法
本文标题:WordPress文章ID不连续解决的终极方法
本文日期:本文发表于 2019/12/08 13:51:49,最后更新于 2019/12/08 15:58:05,如内容失效,请反馈给我们,谢谢!
本文地址: https://www.jsksky.com/solve-the-discontinuity-of-wordpress-article-id.html

网络臭虫

已发布512篇文章
吃得苦中苦,方为人上人,不卧薪藏胆,哪能苦尽甘来?点击进入我的网站了解更多有关我的信息。

评论 抢沙发

A 作者 M 管理员

评论前必须登录!

 


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

支付宝扫一扫打赏

微信扫一扫打赏