Auto Save(自動保存)案例和情景分析(WordPress禁用文章歷史修訂版本、自動保存和自動草稿功能)
文章目錄
Auto Save(自動保存)案例和情景分析
來人人都是產品經理【起點學院】,BAT實戰派產品總監手把手系統帶你學產品、學運營。
auto save 這個看似小小的功能也有豐富的設計點。以下,通過對幾款產品auto save的使用情況來總結分析auto save該如何使用。
首先,不妨先考慮不同的使用場景,帶著問題來看案例。哪些場景下需要auto save?
- 編輯文檔->保存草稿/完成/提交;
- 編輯文檔(不需要提交的文檔);
- 編輯文檔->跳轉到其他頁面;
- 編輯文檔->出事故(電腦死機/斷電等)。
特殊情況:兩個用戶在不同地方編輯同一個文檔。
案例分析:
以下先從幾個官方設計文檔出發,看看其他產品是怎麼做的,再從個人使用角度分析幾款產品,最後總結分析結果。
一,Mac OS X Lion:
自動保存:
- 在工作暫停間隙間自動保存;
- 如果沒有連續工作沒有暫停,則每隔5分鐘自動保存一次;
- 在後台默默地保存,沒有提示和進度條,不會干擾用戶;
恢復版本:
- 自動保存的版本排列成左右兩部分,左邊是目前的版本,右邊是之前自動保存的版本,方便用戶做對比;
- 可以回退到之前的任何一個版本或者將之前版本中的一部分(如圖/文字等)複製到當前版本中。
上圖為Mac OS X Lion中的Versions Browser,用於恢復自動保存的文件,其中:
- 為當前版本;
- 為一系列的歷史版本:用戶可以從歷史版本中複製所需的任何元素(如圖和文字)到新的版本中;
- 為恢復按鈕:按下可以用歷史版本替換當前版本;
- 為時間軸:歷史版本的時間軸。點擊時間軸上的日期可以查看該日期的歷史版本;
參考:
二,Microsoft:
自動保存:
- 修改文檔30秒後會自動保存。如果沒有修改動作,則自動保存不會發生;
- 如果你在編輯文檔時,另一個人在同步編輯它(如在線文檔),則任何一個人的修改都會在自動保存發生後更新在另一個人正在編輯的文檔中;(附上原文,以免翻譯錯: If someone else has updated the same record while you』re editing it, those changes will be retrieved and displayed in the form when auto-save occurs.)
參考:
三,WordPress:
自動保存:
- 每隔幾秒自動保存一次;
- 可以看到上次自動保存的時間,並且可以手動保存;
- 所有自動保存的版本都留著,可以隨時回退到其中的任何一個版本;
對於已發布的內容:
- 對於已發布的內容,自動保存仍然運行,但是不會覆蓋已發布的內容;
- 直到點擊「更新」按鈕才會將更改內容發布到網上;
編輯中:
- 當你編輯文檔時突然斷網,或者不小心點進另一個頁面,WordPress.com會自動將你編輯的內容存到瀏覽器的本地存儲(local storage)中,這樣當你再次打開編輯器的時候就會看到上次編輯的內容;
參考:
四,Rhino:
自動保存:
- 每隔一段時間自動保存一次;
- 當用戶手動關閉文檔之後,自動保存的版本會被清空;
- 如果是非正常關閉,如電腦死機或者斷電,自動保存的版本會保存在硬碟上;
- 當你打開Rhino時,如果Rhino檢測到一個自動保存的文件,它會提示你保存該文件;
參考:
實際體驗
以上都是參考的官方設計文檔,接下來親自體驗下身邊的產品來直觀感受下auto save。
一、Lofter
Lofter的自動保存能力讓我印象深刻,因為我編輯了內容後沒保存直接關掉網頁,下次打開lofter點擊「文字」按鈕時,發現我上次編輯沒保存的內容都在。
一般情況下,發文字的按鈕如下,點擊後進入下面的編輯頁面。可以看到發布按鈕有更多選項,其中包括「保存為草稿」。如果選擇保存為草稿,那麼相當於手動保存,文章會出現在草稿箱中。
而如果你沒有點擊任何按鈕,直接關掉網頁,那麼下次打開lofter時,文字按鈕有了一個小小的變化,那就是右上角像摺紙一樣往裡折了一角。此時點擊文字按鈕,出來的編輯框中有你上次未保存的內容,你可以繼續編輯。
選擇「保存為草稿」,則保存內容如下:
這時編輯草稿,多寫「加幾個字加幾個字」,然後,再次不保存的情況的關掉網頁。猜猜下一次打開草稿是什麼樣的。
再次打開草稿箱的時候,依然看的是上圖,發現「加幾個字加幾個字」並沒有出現在草稿中。但是,當我點擊「編輯」按鈕調出編輯器的時候,奇蹟發生了!!沒保存的那幾個字出現在了編輯器中!!如下圖所示。
整理下Lofter的保存流程,製作流程圖如下:
這個案例讓我發現,編輯器是個多麼神奇的存在,可以保存任何我沒保存的內容。
二、簡書
簡書的自動保存超級簡單,比Lofter少了一個層級,流程圖如下:
簡書中的編輯器即草稿箱,每次修改都會隨時保存,「發布文章」按鈕自動變成「保存中...」以提示正在保存。
點擊「發布文章」按鈕,文章發布,按鈕變成「已發布」。
對於「已發布」的文章,再次編輯時,依然會出現「保存中...」字樣提示正在保存。已發布的文章自動保存後,按鈕變成如下的「發布更新」,再次點擊後才會變成「已發布」。
這個案例讓我知道一個保存狀態可以有這麼多種,自動保存和手動保存也可以結合得如此天衣無縫。
三、Medium
Medium每隔一段時間自動保存一次,並且保留多個版本,可以看到在publish按鈕旁邊的「...」按鈕上,有個「revision history」的選項,點擊之後可以看到許多autosaved的版本,用戶可以根據需要回退到其中任何一個版本。
這個案例與其他博客的差異點就在於保存了多個版本。這與Photoshop中的「歷史記錄」差不多,給用戶提供更多回退的選擇,但也佔用更多系統資源。
四、Qzone說說
Qzone發表說說的自動保存內容自動同步到其他頁面的發說說文本框,流程圖如下:
在「個人中心」中,有個發說說的文本框,輸入以下內容:
此時不點擊發表按鈕(同時也沒有保存按鈕),直接進入「我的主頁」,找到「我的說說」,可以發現這裡也有一個發說說的文本框,並且已經填寫了我在「個人中心」的文本框中輸入的內容。這時,如果在這裡修改文本框中的內容,回到「個人中心」,會發現其中的內容也被修改了。這兩個文本框的內容保持一致。
這個案例告訴我們,「幫人幫到底,送佛送到西」,自動保存就要讓用戶在任何一個入口都能看到上次未手動保存的內容。
總結:
一. 自動保存的時間點可以有以下幾種情況:
- 每隔一段時間自動保存;
- 在用戶暫停工作時保存;
- 每次修改立即自動保存;
二. 自動保存版本的保留:
- 僅保留最近一次自動保存的版本;
- 保留多個自動保存的版本,以便回退到其中任何一個版本;
三. 自動保存版本的清空:
- 在手動保存之後,清空之前所有自動保存的版本;
- 手動關閉文檔後清空所有自動保存的多個版本;
- 僅清空最新版本之外的其他版本;
一個小小的功能,也有如此多的設計點。多觀察,多分析,多記錄和總結,希望可以在交互的道路上越走越遠。
#專欄作家#
Snow,微信公眾號:用戶體驗報告。人人都是產品經理專欄作家,東南大學工業設計研究生,每周更新一篇原創產品體驗報告,分析產品設計體驗的好壞,以此進步。願與大家共同進步。
WordPress禁用文章歷史修訂版本、自動保存和自動草稿功能
WordPress後台編輯文章,或修改文章時候經常會不停地自動保存很多修訂版本,每一次修訂版本都會寫入資料庫中,這樣的好處就是當你在寫文章時候,如果沒有Ctrl+s保存的習慣,系統自動幫你定時保存,以免意外情況下關閉編輯器而導致文章內容丟失。但缺點是會在資料庫產生很多無用的數據,使你的資料庫越來越臃腫,給資料庫帶來不必要的負擔,拖慢網站速度。所以,這種功能對中小型網站其實並沒有太大的意義,往往我們並不需要這種人性化的功能。
版本修訂歷史(Post Revisions)是在文章發布後,每次點擊「更新」時向資料庫添加一條版本修訂歷史記錄。這種方式和wiki很像。會導致資料庫臃腫,文章URL不夠美觀,文章ID不連續等問題。然而,由於個人博客很少需要保留版本記錄,這個功能顯得有些雞肋。
自動保存(Auto-Save)就是在你新編輯發布文章之前,系統默認會定時保存編輯的文章內容。默認每1分鐘一次,相當的頻繁。雖然應該存在,但WordPress的處理方式實在有些奇怪,自動保存居然也要佔用文章ID,並且默認60s保存一次,這樣會造成一篇文章寫下來可能會消耗幾十個ID,並且在資料庫中存入了大量的無用信息。
自動草稿(Auto-Draft)是在WordPress3.0之後新增的功能,在點擊「寫文章(新建文章)」後(不確定是否只是這種情況)自動保存的草稿,會被WordPress定期清除,但佔據的ID也隨之失去。這個功能也沒有太大的用處,屬於雞肋功能。
要想關閉WordPress修訂版本、自動保存和自動草稿功能,首先我們要知道控制他們的代碼在哪裡,控制他們的代碼是什麼。只有精準的定位到問題的所在,才能根據所需進行修改。(註:以下幾種方法是在 WordPress 4.9.4 版本實測有效)
WordPress文章禁用版本修訂歷史(revision)和自動保存(autosave)的四種方法
方法一、通過修改 WordPress 程序根目錄下wp-config.php配置文件實現功能禁用
打開根目錄下的 wp-config.php 文件,在 「define(『WP_DEBUG』, false);」 後邊添加下面的兩行代碼:
1 2 3 |
/** WordPress 編輯器關閉自動保存和歷史修訂版本選項。 本項注釋掉即可開啟。 */ define(\'WP_POST_REVISIONS\', false);//禁用歷史修訂版本post_revision define(\'AUTOSAVE_INTERVAL\', 86400);//設置自動保存時間設置為一天 |
方法二、找到 wp-includes/defaut-contants.php 文件,修改如下代碼:
注意:下次升級WordPress程序時,更新後會導致代碼被覆蓋掉,需要重新添加。
1 2 3 4 5 6 7 8 9 10 11 12 |
//禁用版本修訂歷史和自動保存 // 修改前 if ( !defined( \'AUTOSAVE_INTERVAL\' ) ) define( \'AUTOSAVE_INTERVAL\', 60 ); //這個是自動保存 if ( !defined(\'WP_POST_REVISIONS\') ) define(\'WP_POST_REVISIONS\', true ); //這個是版本修訂歷史 // 修改後 if ( !defined( \'AUTOSAVE_INTERVAL\' ) ) define( \'AUTOSAVE_INTERVAL\', false ); //禁用自動保存 if ( !defined(\'WP_POST_REVISIONS\') ) define(\'WP_POST_REVISIONS\', false ); //禁用版本修訂歷史 |
其中 autosave 的60為自動保存時間間隔,單位為s,可以修改為更大的數值或修改為false禁用。
以上二種方法並沒有 完全禁用掉自動保存 。因為在沒有點擊「更新」文章之前就離開編輯的頁面時,會彈出「系統可能不會保存你所做的更改」的提示窗口。所以還需要修改 wp-admin/post-new.php和wp-admin/post.php 這兩個文件。將這兩個文件中的 wp_enqueue_script( \'autosave\' ); 注釋掉。其中post.php還要把前面一行的if語句注釋掉。
打開 wp-admin/post.php 文件,搜索並注釋
1 2 |
//if ( \'attachment\' !== $post_type ) // wp_enqueue_script(\'autosave\'); |
打開 wp-admin/post-new.php 文件,搜索並注釋
1 |
//wp_enqueue_script( \'autosave\' ); |
方法三、當前使用主題文件夾下的 functions.php 文件php結束標記 ?> 前加上如下代碼
1 2 3 4 5 6 7 8 9 10 11 |
//禁用文章自動保存(方法一) add_action( \'admin_print_scripts\', create_function( \'$a\', \"wp_deregister_script(\'autosave\');\" ) ); //禁用文章自動保存(方法二)。註:方法一與方法二任選其一 add_action(\'wp_print_scripts\',\'fanly_no_autosave\'); function fanly_no_autosave(){ wp_deregister_script(\'autosave\'); } //禁用文章修訂版本 add_filter( \'wp_revisions_to_keep\', \'fanly_wp_revisions_to_keep\', 10, 2 ); function fanly_wp_revisions_to_keep( $num, $post ) { return 0;} |
另外你如果有自己定義的文章類型,可以使用下面這段代碼來禁止特定文章類型的修訂版本。
1 2 3 4 5 6 7 8 |
//只禁用某種文章類型的修訂版本 add_filter( \'wp_revisions_to_keep\', \'fanly_wp_revisions_to_keep\', 10, 2 ); function fanly_wp_revisions_to_keep( $num, $post ) { if ( \'post_type\' == $post->post_type ) { //post_type為你要禁止修訂版本的文章類型 return 0; } return $num; } |
方法四、使用「 Super Switch 」 插件禁止修訂版本和自動保存
1、在 「安裝插件」頁面的搜索框中,輸入 Super Switch ——》 回車 ——》 找到 Super Switch ——》 點擊「現在安裝」 ——》 啟用「 Super Switch 」 插件。
2、打開 Super Switch(超級開關)插件,將修訂版本和自動保存的選項設置為「禁止」。
WordPress文章禁用自動草稿(auto-draft)功能
打開 wp-admin/includes/post.php ,找到如下代碼:
1 2 3 4 |
/* $post_id = wp_insert_post( array( \'post_title\' => __( \'Auto Draft\' ), \'post_type\' => $post_type, \'post_status\' => \'auto-draft\' ) ); $post = get_post( $post_id ); */ |
將其注釋,並添加以下代碼:
1 2 3 4 5 6 7 8 9 10 |
/* 修改開始*/ global $wpdb; global $current_user; // 獲取當前登錄管理用戶 $post = $wpdb->get_row( \"SELECT * FROM $wpdb->posts WHERE post_status = \'auto-draft\' AND post_type = \'$post_type\' AND post_author = $current_user->ID ORDER BY post_date ASC, ID ASC LIMIT 1\" ); // 獲取最早一條自動草稿 if ( !$post ) { //沒有記錄添加一條草稿記錄 $post_id = wp_insert_post( array( \'post_title\' => __( \'Auto Draft\' ), \'post_type\' => $post_type, \'post_status\' => \'auto-draft\' ) ); $post = get_post( $post_id ); } /* 修改結束 */ |
ok,到這裡,差不多結束了,如果你還想刪除資料庫早期已經保存的文章數據,可以參考下面的文章。
1. 帶 [親測] 說明源碼已經被站長親測過!
2. 下載後的源碼請在24小時內刪除,僅供學慣用途!
3. 分享目的僅供大家學習和交流,請不要用於商業用途!
4. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!
5. 本站所有資源來源於站長上傳和網路,如有侵權請郵件聯繫站長!
6. 沒帶 [親測] 代表站長時間緊促,站長會保持每天更新 [親測] 源碼 !
7. 盜版ripro用戶購買ripro美化無擔保,若設置不成功/不生效我們不支持退款!
8. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
9. 如果你也有好源碼或者教程,可以到審核區發布,分享有金幣獎勵和額外收入!
10.如果您購買了某個產品,而我們還沒來得及更新,請聯繫站長或留言催更,謝謝理解 !
GG資源網 » Auto Save(自動保存)案例和情景分析(WordPress禁用文章歷史修訂版本、自動保存和自動草稿功能)