您好,登錄后才能下訂單哦!
這篇文章主要講解了“WordPress中文章ID不連續(xù)問(wèn)題如何解決”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“WordPress中文章ID不連續(xù)問(wèn)題如何解決”吧!
所謂的文章修訂版就是你每次修改一次文章,它都會(huì)自動(dòng)幫你保存修改之前的文章版本,專(zhuān)業(yè)術(shù)語(yǔ)叫做版本控制,這樣保證了在誤修改的情況下可以還原之前的內(nèi)容,這個(gè)在維基文檔的維護(hù)方面是有很大幫助的,但是作為我們的小博客,似乎沒(méi)多大用處,而且這個(gè)修訂版在數(shù)據(jù)庫(kù)中是占據(jù)一個(gè)ID的,這也是導(dǎo)致文章ID不連續(xù)的問(wèn)題之一。要想禁用文章修訂版,可以在 wp-config.php文件中添加:
define('WP_POST_REVISIONS', false);
也可以在當(dāng)前主題的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;
}
禁用了文章修訂版之后,數(shù)據(jù)庫(kù)中還是保存著之前已經(jīng)創(chuàng)建的文章修訂版,這些其實(shí)已經(jīng)沒(méi)多大用處,而且占著ID,我們可以將它刪除。至于怎么刪除,可以在 phpmyadmin 中執(zhí)行以下SQL語(yǔ)句(會(huì)影響置頂文章,慎用!并做好備份):
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';
相信很多博友在發(fā)布文章都會(huì)同時(shí)上傳/插入一些附件,如圖像、視頻、音樂(lè)等,這些附件可以在WordPress管理后臺(tái) - 媒體庫(kù)中看到,不同媒體對(duì)應(yīng)了不同的文章??墒悄阋⒁獾氖沁@些媒體也是占據(jù)著文章ID的,它們與文章都保存在同一個(gè)數(shù)據(jù)庫(kù)表wp_posts中。如果你特別追求文章的ID一定要完美無(wú)缺地連續(xù),請(qǐng)不要在發(fā)布文章的時(shí)候上傳/插入這些媒體,并請(qǐng)?jiān)赪ordPress管理后臺(tái) - 媒體庫(kù)中,刪除之前上傳的媒體(注意這個(gè)操作不只是刪除記錄,而且會(huì)刪除你上傳的文件),需要的話(huà)請(qǐng)用FTP重新上傳這些文件。
自動(dòng)保存的好處是你在編輯文章的時(shí)候,每隔一小段時(shí)間系統(tǒng)會(huì)自動(dòng)幫你保存編輯的文章,防止網(wǎng)頁(yè)突然關(guān)閉,導(dǎo)致之前寫(xiě)的幾千字嘩啦一下全沒(méi)了。缺點(diǎn)是每篇都文章都會(huì)有一個(gè)自動(dòng)保存的記錄,同樣占據(jù)一個(gè)文章ID,也是文章ID不連續(xù)的原因之一,如果你不需要這個(gè)功能,可以在當(dāng)前主題的functions.php中添加以下代碼:
// 禁用自動(dòng)保存,所以編輯長(zhǎng)文章前請(qǐng)注意手動(dòng)保存。
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
方法一:可在當(dāng)前主題的functions.php中加入以下PHP代碼,這樣如果你只是單純發(fā)文章,不發(fā)頁(yè)面,不添加菜單,不上傳媒體的話(huà),基本上此后的文章ID是連續(xù)的,而且不改變之前已經(jīng)發(fā)布的文章ID,不影響SEO:
// WordPress 3.8測(cè)試有效
function keep_id_continuous(){
global $wpdb;
// 刪掉自動(dòng)草稿和修訂版
$wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'");
// 自增值小于現(xiàn)有最大ID,MySQL會(huì)自動(dòng)設(shè)置正確的自增值
$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' );
如果你使用了置頂文章、菜單和父子頁(yè)面等功能,下面的方法失效:
方法二:完成以上幾步,基本上可以保證以后發(fā)布的文章ID都會(huì)是連續(xù)的了,但是之前已經(jīng)發(fā)布的文章ID還是一片混亂,得把他們重新排列,以保證是ID是連續(xù)的。我寫(xiě)了一個(gè)PHP腳本,你可以通過(guò)以下網(wǎng)址下載,下載后用文本編輯器打開(kāi),根據(jù)開(kāi)頭的說(shuō)明修改數(shù)據(jù)庫(kù)信息,然后將該P(yáng)HP文件上傳至你的博客空間,運(yùn)行一下看到OK就可以了,你可以到phpmyadmin中查看wp_posts表中的id是不是連續(xù)的了。還是那句話(huà),開(kāi)始之前請(qǐng)先備份你的數(shù)據(jù)庫(kù)。(如果你使用了post id作為固定鏈接,那么將可能改變所有文章的網(wǎng)址,會(huì)影響搜索引擎收錄;如果你用的插件建立了新的數(shù)據(jù)庫(kù)表,如投票插件等,也將會(huì)出現(xiàn)問(wèn)題;如果你的博客中創(chuàng)建了父子關(guān)系的頁(yè)面,運(yùn)行了以下腳本將會(huì)失去此關(guān)系。請(qǐng)慎用?。?/p>
感謝各位的閱讀,以上就是“WordPress中文章ID不連續(xù)問(wèn)題如何解決”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)WordPress中文章ID不連續(xù)問(wèn)題如何解決這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。