惱人的 Auto Draft 功能
WordPress 從 2.6 版開始多了一個 Post Revision 文章版本的功能,雖然立意甚佳但是對我這種以內定文章 ID 來發文的人是一種折磨,因為會造成發文的編號不連續!所以就在 WordPress 才剛推出我就發了一篇 關閉WordPress 2.6的發文版本功能 的文章把它給廢了!
之後又興 WordPress 相安無事的相處了二年多,但是從 WordPress 3.0 版開始,WordPress 又新增了一個「自動草稿」Auto Draft 的功能,從那個時候開始就有許多人為了發文連號跟 WordPress 奮戰了許久!
而這當中曾經有人成功的修改的 WordPress 程式碼,讓 Auto Draft 這個功能無效,像是這一篇:改善 WordPress 3.2.1 文章 ID 無法連續的問題 的方法曾經有效過
但是就在 WordPress 更新之後,網路上似乎已經找不到有效的方法來停用 WordPress 自動草稿 Auto Draft 這一個很讓人討厭的功能(你可以看一下引用的那個部落格最新的文章編號是否有連號?)
轉個彎海闊天空
在眾人百思不得其解的當下,高登有一天突然悟到了一個真理:既然無法除掉這個自動草稿功能,那就設法與它和平共處吧!
那些失敗方法的邏輯是一是要讓自動草稿失效,而我的思維轉變成:你一定要自動草稿那就給你一篇,但你就只有那一篇,不要來影響我正常的發文編號,這樣文章就可以保持連號!
為什麼自動草稿是把連續發文編號搞亂呢?原來是系統一篇標題為「自動草稿」的而且 Post_type 為 auto-draft 的隱藏文章,而這一篇看不到的自動草稿是會佔用編號的
更糟的是這篇自動草稿的有效期限是七天,所以像我這種有時候久久才發一篇文章的人,就算你用phpMyAdmin去資料庫找,有時候也會因為自動草稿已經超過七天而被另一篇新的自動草稿取代而造成跳號的情形
關於排程工作會自動刪除自動草稿在昨天的 WordPress 排程管理外掛 WP-crontrol 就有提到
你在網路上找到的所有禁用自動草稿的文章都是教你如果將這個功能廢掉,但是高登教大家換一個方式思考:我只要把自動草稿的有效期限延長,不就可以與它和平共存了?!
會有這樣的思維也是因為推廣有機而來的:人定勝天是不對的!人類要和其他的物種和平共存才是地球之福
關鍵在有效期限
所以請你打開 wp-includes 裡面的 post.php 這個程式來修改,如果主機有 cPanel 或是 Plesk 後台的,請直接在那裡開啟編輯,建議不要用 FTP 程式來修改,因為可能會存錯檔案編碼
打開這個檔案之後請搜尋「NOW()」字串,你就可以找到下面這後程式碼:
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
把 7 DAY 的 7 改成大一點的數字,像我就改成 365,也就是讓自動草稿可以存活一年,在這之前它不會對我的文章編號造成威脅,這麼簡單的一個動作而已,如果你是用文章編號來發文的不妨試試看這一招是否有效?(按我的首頁再檢查每一篇文章的編號就知道了!)
還有記得 WordPress 版本升級的時候也要再改一次
後記:
常常會在網路上的社群或是文章看到許多人在討論什麼是最好的的固定網址(Permalink),而我總是提醒那些人有好幾個知名度滿高的 WordPress 網站都是用預設的塌址 ?p=123 這種固定網址,我們這些站 SEO 就不好了嗎?
其實這個觀點我在書裡面已經講過了:重點是在有價值的文章內容,搜尋引擎優化 SEO 只是配角,請不要把它當主角好嗎?
雖然小弟都有在使用自動儲存草稿的功能,不過還是來研究一下高登大的這篇文章吧,謝謝。