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更新

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


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

WordPress文章ID不连续解决的终极方法-灵阳星空
WordPress文章ID不连续解决的终极方法
此内容为付费阅读,请付费后查看
L币1
限时特惠
L币10
您当前未登录!建议登陆后购买,可保存购买订单
付费阅读
© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏
分享
评论 抢沙发

请登录后发表评论