博客 / WordPress/ WordPress解决文章ID不连续的问题

WordPress解决文章ID不连续的问题

WordPress解决文章ID不连续的问题

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 的自动保存和修订版本功能。这意味着编辑长文章时,请务必注意手动保存,否则可能丢失未保存的更改。
  • 操作建议:建议在添加代码前备份网站数据库。此方法主要适用于有强迫症、且能接受禁用自动保存和修订版本的用户。对于内容安全要求高的站点,请谨慎禁用修订版本。

发表评论

您的邮箱不会公开。必填项已用 * 标注。