لقد أزعجتني مشكلة معرفات المقالات غير المتتالية في WordPress لفترة طويلة.,سأقدم اليوم شرحًا تفصيليًا للأسباب والحلول المحددة لمعرفات مقالات WordPress غير المستمرة.。
WordPress文章ID不连续的原因
用WordPress做网站的站长可能会发现,最大的文章ID要远大于文章总量,比如品自行博客现在文章才350篇的文章,但ID已经超过5000了,对于有些强迫症的我确实有些无法忍受,其实WordPress文章ID不连续主要有以下原因:
1、文章的自动保存、修订版本
在WordPress后台写文章的时候,سيقوم النظام تلقائيًا بحفظ المقالات من حين لآخر.,لمنع فقدان البيانات,احفظ مرة واحدة لإنشاء معرف;
عندما نراجع المقال,قم بالتعديل مرة واحدة لإنشاء مراجعة,يتوافق مع معرف المادة المنقحة,حتى لو تم حذف المراجعة,لا يمكن إعادة تدوير المعرف الأصلي المشغول.;
2、زائدة、قائمة طعام、页面占用ID
WordPress的附件、تعد عناصر وصفحات قائمة التنقل منشورات خاصة نسبيًا.,وسوف تشغل معرف آخر.,يمكنك رؤية أنواع المنشورات في بنية جدول البيانات لجدول wp_posts (تفاصيل جدول قاعدة بيانات WordPress wp_posts),لا يمكن تغيير هذا。
WordPress文章ID不连续的解决办法
了解了WordPress文章id不连续的原因以后,نحن نفهم ذلك بطبيعة الحال بسبب التعلق、قائمة التنقل ومعرف احتلال الصفحة,من الناحية النظرية، لا توجد طريقة مطلقة لجعل معرفات المقالات مستمرة.,ولكن لا يزال من الممكن دون الكثير من الاختلاف,لا يمكن ضبط هذا إلا من خلال الحفظ التلقائي للمقالة ومراجعات المقالة.。
واحد、禁用文章修订版
所谓的文章修订版就是你每次修改一次文章,它都会自动帮你保存修改之前的文章版本,专业术语叫做版本控制,这样保证了在误修改的情况下可以还原之前的内容,这个在维基文档的维护方面是有很大帮助的,但是作为我们的小博客,似乎没多大用处,而且这个修订版在数据库中是占据一个ID的,这也是导致文章ID不连续的问题之一。要想禁用文章修订版,可以在 wp-config.php文件中添加:
define('WP_POST_REVISIONS', false);
也可以在当前主题的functions.php添加以下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';三、删除不必要的附件
相信很多博友在发布文章都会同时上传/插入一些附件,如图像、فيديو、音乐等,这些附件可以在WordPress管理后台 – 媒体库中看到,不同媒体对应了不同的文章。可是你要注意的是这些媒体也是占据着文章ID的,它们与文章都保存在同一个数据库表wp_posts中。如果你特别追求文章的ID一定要完美无缺地连续,请不要在发布文章的时候上传/插入这些媒体,并请在WordPress管理后台 – 媒体库中,删除之前上传的媒体(注意这个操作不只是删除记录,而且会删除你上传的文件),需要的话请用FTP重新上传这些文件。
四、禁用自动保存
自动保存的好处是你在编辑文章的时候,每隔一小段时间系统会自动帮你保存编辑的文章,防止网页突然关闭,导致之前写的几千字哗啦一下全没了。缺点是每篇都文章都会有一个自动保存的记录,同样占据一个文章ID,也是文章ID不连续的原因之一,如果你不需要这个功能,可以在当前主题的functions.php中添加以下代码:
// 禁用自动保存,所以编辑长文章前请注意手动保存。
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
五、重新排列不连续的文章ID
方法一:可在当前主题的functions.php中加入以下PHP代码,这样如果你只是单纯发文章,不发页面,不添加菜单,不上传媒体的话,基本上此后的文章ID是连续的,而且不改变之前已经发布的文章ID,不影响SEO:登录后复制
// 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' );