WordPress 文章 ID 不连续是正常现象
WordPress 文章 ID 不连续是一个很正常的现象,并非你的博客出了问题,而是 WordPress 系统默认行为,通常可以忽略它。
但对于有轻微强迫症、追求完美的朋友来说,这的确很让人困扰。
如何解决文章 ID 不连续的问题
WordPress 后台并未直接提供关闭此功能的选项。要解决文章 ID 不连续的问题,可以通过添加代码来清理数据库中的草稿、修订版本等记录,并重置自增 ID。下面将介绍如何实现。
操作方法
找到当前主题目录,在主题目录下找到文件 functions.php,将下述代码添加到文件末尾。
// WordPress 解决文章 ID 不连续的问题
function keep_id_continuous() {
global $wpdb;
// 获取已发布文章、草稿、私密文章及附件中最大的 ID
$lastID = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' OR post_status = 'draft' OR post_status = 'private' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ORDER BY ID DESC LIMIT 1");
// 删除所有大于 $lastID 的自动草稿和修订版本
$wpdb->query("DELETE FROM $wpdb->posts WHERE ( post_status = 'auto-draft' OR ( post_status = 'inherit' AND post_type = 'revision' ) ) AND ID > $lastID");
$lastID++;
// 重置 posts 表的自增 ID 起始值
$wpdb->query("ALTER TABLE $wpdb->posts AUTO_INCREMENT = $lastID");
}
// 在新建文章、媒体、菜单页面时触发清理
add_filter( 'load-post-new.php', 'keep_id_continuous' );
add_filter( 'load-media-new.php', 'keep_id_continuous' );
add_filter( 'load-nav-menus.php', 'keep_id_continuous' );
// 禁用自动保存(编辑长文章前请注意手动保存)
add_action( 'admin_print_scripts', function() {
wp_deregister_script('autosave');
} );
// 禁用文章修订版本
remove_action( 'pre_post_update', 'wp_save_post_revision' );
代码说明与注意事项
- 功能说明:此代码会在访问“新建文章”、“新建媒体”或“菜单”页面时,自动清理数据库中的自动草稿和修订版本,并将文章表的自增 ID 重置为当前最大有效 ID 的下一个值,从而使新文章的 ID 保持连续。
- 重要提醒:代码中禁用了 WordPress 的自动保存和修订版本功能。这意味着编辑长文章时,请务必注意手动保存,否则可能丢失未保存的更改。
- 操作建议:建议在添加代码前备份网站数据库。此方法主要适用于有强迫症、且能接受禁用自动保存和修订版本的用户。对于内容安全要求高的站点,请谨慎禁用修订版本。