很多站长朋友在使用WordPress的时候,发现发布的文章并不连续。当你发布一篇文章ID是1,但是发布第二篇文章ID是3,或者4,甚至可以排到几千,这是为什么呢?
这是因为我们使用了
/%post_id%.html
这种固定连接形式,包括星空站长网,也是使用这种形式的ID,所以可以看到很多文字依次发布,但ID却不是连续的。
WordPress 在设计之初,并没有考虑到图片附件、自动保存、草稿等都会占用ID,致使文章ID不连续。
老版本编辑器的Wordpress可以在发文的时候修改固定连接,这种方法虽然有效,但是很麻烦,不可能每篇都做这样的操作。
禁用修订版
在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 改用其他相关程序。
只要文章质量高,其实连续不连续都无所谓。
暂无评论内容