[WordPress] 客製化紀錄網站內容版本修訂的做法

本篇文章更新時間:2020/01/02
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~


這個需求 WordPress 本身就有提供一個版本修訂功能 Revisions,讓誤改有反悔的可能。

但需求不同往往功能也就變化不少。今天這需求主要是為了符合歐洲法規,客戶網站上公告的職缺本身需要有一個履歷紀錄,紀錄何時上架、何時修訂、修訂內容。

剛好先前有討論過一些外掛([WordPress] 追蹤網站操作與修訂的工具 – Simple History)能夠紀錄後台操作,追蹤使用情況。而這篇 What is the Best Plugin to Track WordPress Revisions? 更是有比較了其他類似的外掛,也不妨看看!

可惜,「全站」並非我要關注的,我只想記錄某一個內容類型。找不到外掛的情況下,就自己來實作看看,以下是一個基礎程式:

function mxp_get_post_edit_log($new_status, $old_status, $post) {
    if ($post->post_type != "page") {
        return;
    }

    //取得編修人
    $current_user = wp_get_current_user();
    //組合紀錄格式
    $sp_line     = "-.-.-.-.-.-.-.-.-.-.-.-";
    $log_user    = "User ID: {$current_user->ID}:{$current_user->display_name}";
    $log_message = $log_user . " > " . $post->post_type . " -> status: " . $old_status . " to " . $new_status . " at " . date('Y-m-d H:i:s') . " | " . time();
    $log_content = $log_message . PHP_EOL . "Title: " . $post->post_title . PHP_EOL . $sp_line . PHP_EOL . $post->post_content . PHP_EOL . $sp_line . PHP_EOL;
    //創建目錄
    $upload_dir  = wp_upload_dir();
    $log_dirname = $upload_dir['basedir'] . '/post_edit_log';
    if (!file_exists($log_dirname)) {
        wp_mkdir_p($log_dirname);
    }
    error_log($log_content, 3, $log_dirname . "/" . $post->ID . ".log");

}
add_action('transition_post_status', 'mxp_get_post_edit_log', 10, 3);

Gist: Link

其實不難,但簡陋不少!程式設計是在 uploads/post_edit_log 目錄下存放編修記錄檔案,以供備查。至於檔案內容格式之後完全可以再根據明確一點的需求來改囉!


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *