在WordPress中遇到文章ID不连续的问题?不用担心,这里有一个解决方案来帮助你。虽然WordPress 3.0及后续版本由于自动草稿功能导致ID不连续,但我们可以通过一些方法尽量优化这一情况。如果你的固定链接并不依赖文章ID,那么这个问题对你来说并不重要。但如果需要,以下是一些建议:
1. 禁用文章修订:文章修订功能会在每次修改时保存旧版本,但同时也占用了ID。可以在`wp-config.php`文件中添加`define(‘WP_POST_REVISIONS’, false);`或在`functions.php`中添加代码以限制修订版数量。
“`php
function specs_WP_revisions_to_keep($num, $post){
if(‘post’ === $post->post_type)
$num = 0;
return $num;
}
add_filter(‘wp_revisions_to_keep’, ‘specs_WP_revisions_to_keep’, 10, 2);
“`
2. 删除已有修订版:使用SQL语句删除旧的修订版,但请注意这可能影响到置顶文章,务必先备份数据库。
“`sql
DELETE a, b, c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_ID)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_ID)
WHERE a.post_type = ‘revision’;
“`
3. 删除不必要的附件:附件占用文章ID,若需连续ID,可避免在文章中直接上传媒体,而通过FTP重新上传。
4. 禁用自动保存:虽然自动保存有助于防止内容丢失,但它也会创建额外的记录。在`functions.php`中添加代码以禁用此功能。
“`php
add_Action(‘admin_print_scripts’, create_function(‘$a’, “WP_dequeue_script(‘autosave’);”));
“`
5. 重新排列文章ID:
– 方法一:在`functions.php`中添加代码,确保新发布文章的ID连续,但不改变已发布文章的ID。
“`php
function keep_id_continuous() {
global $wpdb;
// 删除自动草稿和修订版
$wpdb->query(“DELETE FROM `$wpdb->posts` WHERE `post_status` = ‘auto-draft’ OR `post_type` = ‘revision'”);
// 设置自增ID为1
$wpdb->query(“ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1”);
}
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’);
“`
– 方法二:对于已发布的文章,可以使用特定的PHP脚本来重新排列ID,但请注意这可能影响seo、插件或页面父子关系,因此需谨慎操作。
以上就是解决WordPress文章ID不连续问题的一些方法。在执行任何操作之前,请确保备份数据库,以免造成不可逆的损失。希望这些信息对你有所帮助!