很多站长朋友在使用WordPress的时候,发现发布的文章并不连续。当你发布一篇文章ID是1,但是发布第二篇文章ID是3,或者4,甚至可以排到几千,这是为什么呢? 这是因为我们使用了 /%post_id%.html 这种固定连接形式,包括星速云,也是使用这种形式的ID,所以可以看到很多文字依次发布,但ID却不是连续的。…

很多站长朋友在使用WordPress的时候,发现发布的文章并不连续。当你发布一篇文章ID是1,但是发布第二篇文章ID是3,或者4,甚至可以排到几千,这是为什么呢?

这是因为我们使用了

/%post_id%.html

这种固定连接形式,包括星速云,也是使用这种形式的ID,所以可以看到很多文字依次发布,但ID却不是连续的。

WordPress 在设计之初,并没有考虑到图片附件、自动保存、草稿等都会占用ID,致使文章ID不连续。

老版本编辑器的Wordpress可以在发文的时候修改固定连接,这种方法虽然有效,但是很麻烦,不可能每篇都做这样的操作。

WordPress 发文章如何让ID连续的方法(有序ID)?

禁用修订版

在Wordpress 3.0之后的版本,都会帮你保存修改之前的文章,这个功能在发表文章的时候,使得Wordpress占用了两个ID。修订版是一个ID,实际发布的文章又是一个ID。通过禁用自动保存草稿,来防止多个ID的生成。

方法1在 wp-config.php文件中添加:

define('WP_POST_REVISIONS', false);

方法2在当前主题的functions.php添加

// 禁用修订版本,2015年3月5日更新 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; }

删除文章修订版

当你禁用了修订版,但数据库中依然还保留这之前创建过的修订版,这些创建过的修订版同样占用这ID。我们可以一键将他删除。

在 phpmyadmin 中执行以下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';

执行后即可删除所有的文章修订版。

删除没用的图片和附件

当你打开媒体库,你会发现这些图片,视频音乐等附件,同样占了一个ID,它们与文章都保存在同一个数据库表wp_posts中。如果你特别追求文章的ID一定要完美无缺地连续,请不要在发布文章的时候上传/插入这些媒体,并请在WordPress管理后台 – 媒体库中,删除之前上传的媒体(注意这个操作不只是删除记录,而且会删除你上传的文件),所以不建议删除。

禁用自动保存

自动保存的草稿也会占一个ID,我们需要把自动保存禁掉。

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

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

重新排列顺序

在当前主题的functions.php中加入以下PHP代码:

// WordPress 3.8测试有效 
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' );

单纯发文章,不发页面,不添加菜单,不上传媒体的话,基本上此后的文章ID是连续的,而且不改变之前已经发布的文章ID。

总结

让ID顺序有序排列,其实是一种强迫症心理作祟,为了这种二追求连续而强迫修改。不如弃用 WordPress 改用其他相关程序。

只要文章质量高,其实连续不连续都无所谓。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。