建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

WordPress解决帖子ID不连续的方法

GG网络技术分享 2025-03-18 16:04 0


许多WordPress博客在永久链接中使用文章ID,但是WordPress由于各种原因导致了文章ID不一致的问题。 经常有博主在论坛上提问来解决这个问题,但很少得到满意的答复。 . 今天小编就来告诉大家如何完美的解决这个问题。 这十分完美。 可能有点太远了。 WordPress 3.0以后,会有自动草稿。 每个发布的帖子将占两个 ID 号。 它目前没有被禁用。 方法。 请继续看如何在一定程度上解决文章ID不连续的问题。

1.禁用修改版文章

所谓文章修改版,就是每次修改一篇文章,都会自动保存修改前文章的版本。 技术术语是版本控制,它确保在错误修改的情况下可以恢复以前的内容。 这是在 Wiki 文档中。 维护方面很有帮助,但是作为我们的小博客,好像用处不大,而且这个修改版在数据库中占用了一个ID,这也是导致文章ID不连续的问题之一。 要禁用文章修订,您可以在 wp-config.php 文件中添加:

define('WP_POST_REVISIONS', false);

也可以在当前主题的functions.php中添加如下PHP代码:

// 禁用修订版本add_filter( 'wp_revisions_to_keep', 'specs_wp_revisions_to_keep', 10, 2 );function specs_wp_revisions_to_keep( $num, $post ) {   if ( 'post_type' == $post->post_type )      $num = 0;   return $num;}

2.删除文章修改版

禁用文章修订后,先前创建的文章修订仍存储在数据库中。 这些其实用处不大,占用ID,我们可以删除。 至于如何删除,可以在phpmyadmin中执行如下SQL语句(会影响顶文章,慎用!并做好备份):

DELETE a,b,cFROM wp_posts aLEFT 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';

三、删除不需要的附件

相信很多博主在发布文章的时候都会同时上传/插入一些附件,比如图片、视频、音乐等,这些附件可以在WordPress管理后台-媒体库中看到,不同的媒体对应不同的文章。 但是你要注意,这些媒体也占用了post ID,它们和post存储在同一个数据库表wp_posts中。 如果您特别想要文章的ID完美连续,请不要在发布文章时上传/插入这些媒体,并请在WordPress管理后台-媒体库中删除之前上传的媒体(注意这个操作是不只是删除Record,还会删除您上传的文件),如有需要,请使用FTP重新上传这些文件。

四、禁用自动保存

自动保存的好处是,当您编辑文章时,系统会每隔一小段时间自动为您保存编辑过的文章,防止网页突然关闭,导致之前写的数千字丢失。 缺点是每篇文章都会有一条自动保存的记录,同样会占用一个文章ID,这也是文章ID不连续的原因之一。 如果不需要这个功能,可以在当前主题的functions.php中添加如下代码:

// 禁用自动保存,所以编辑长文章前请注意手动保存。add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );

五、重新排列不连续的文章ID

方法一:可以在当前主题的functions.php中添加如下PHP代码,这样如果你只发文章,不发页面,加菜单,不上传媒体,基本上之后的帖子ID都是连续的并且不更改以前发表的文章的 ID 不会影响 SEO:

function keep_id_continuous(){  global $wpdb;  // 删掉自动草稿和修订版  $wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'");  // 自增值小于现有最大ID,MySQL会自动设置正确的自增值  $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' );

模板兔总结

将以下代码添加到主题的functions.php 文件中。

// 禁用自动保存,所以编辑长文章前请注意手动保存。

add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );

// 禁用修订版本

remove_action( 'pre_post_update' , 'wp_save_post_revision' );

add_filter( 'wp_revisions_to_keep', 'specs_wp_revisions_to_keep', 10, 2 );

function specs_wp_revisions_to_keep( $num, $post ) {

if ( 'post_type' == $post->post_type )

$num = 0;

return $num;

}

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' );

function keep_id_continuous(){

global $wpdb;

// 删掉自动草稿和修订版

$wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'");

// 自增值小于现有最大ID,MySQL会自动设置正确的自增值

$wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1");

}

标签: WordPress 教程

提交需求或反馈

Demand feedback