WooCommerce 後台越來越慢?新北網店先檢查「已排程動作」

WooCommerce 後台越來越慢?新北網店先檢查「已排程動作」

最後更新:2026/10/13

網店剛開的時候,後台點什麼都很快;開了一兩年,訂單列表要轉好幾秒,改一個商品要等半天,前台結帳偶爾還會逾時。很多新北的網店老闆第一個想到的是換主機。先別急,打開資料庫看一看,常常會發現兩張特別大的表:wp_actionscheduler_actions 和 wp_actionscheduler_logs。

這兩張表是 WooCommerce 的「已排程動作」。下面先說它在做什麼,再教你怎麼讓它不再無限長大,以及怎麼安全地清掉已經堆積的舊紀錄。

不想自己改?把這篇交給 AI

把這篇的網址(或全文)連同下面這段話貼給 AI:

我的網站是 WordPress,有裝 WooCommerce。我想照下面這篇文章,檢查並清理 WooCommerce 的「已排程動作」,讓後台不要越來越慢。
請先問我:我能不能進 phpMyAdmin、資料表的前綴是不是 wp_。
問清楚之後,再一步一步告訴我:要用哪一段程式碼、貼在哪裡、哪些地方要換成我自己的資料,以及改完怎麼測試。
如果文章的做法不適合我的網站,請直接告訴我原因和替代做法。
文章:(貼上這篇的網址,或整篇內容)

改之前先備份,密碼不要貼給 AI。

「已排程動作」在做什麼

WooCommerce 有很多事情會先排進一個待辦清單,稍後在背景處理:寄訂單通知信、更新報表數字、清理過期的購物車、跟其他服務同步資料;裝了訂閱制、電子報、物流這類外掛,排進來的工作更多。這個待辦清單就是「已排程動作」,到「WooCommerce → 狀態 → 已排程動作」可以看到每一筆。

每件工作做完,WooCommerce 會留下一筆紀錄,再加上幾筆執行過程的日誌。完成和取消的紀錄預設保留 30 天;失敗的紀錄,舊版本完全不會自動清掉,新版本則保留 3 個月。訂單多、外掛多的商店,每天排進來的工作就多,紀錄留得越久,表就越大,後台每次查詢都要翻過這些紀錄。

打開「已排程動作」時,順便看一下「失敗」和「待處理」的數量。待處理一直累積、時間早就過了卻沒有執行,通常代表網站的排程沒有正常運作,或某個外掛出了問題,這比表很大更需要先處理。

讓紀錄只留 7 天

一般的商店不需要把一個月前的「寄信成功」紀錄留著。加上這段程式碼,完成和取消的紀錄只留 7 天,失敗的留 30 天,方便出問題時回頭查:

// 排程動作的紀錄:完成、取消的只留 7 天(預設 30 天)
add_filter('action_scheduler_retention_period', function () {
    return 7 * DAY_IN_SECONDS;
});

// 失敗的紀錄留 30 天,方便回頭查問題(新版預設留 3 個月)
add_filter('action_scheduler_retention_period_for_failed', function () {
    return 30 * DAY_IN_SECONDS;
});

我們在測試站放了 20 筆 10 天前完成的紀錄、20 筆 40 天前失敗的紀錄。沒加程式碼時,清理程序跑完一筆都沒少;加了之後,兩種紀錄都被清掉。清理程序是 WooCommerce 自己定時跑的,加了程式碼不用另外做什麼,舊紀錄會一批一批被清掉。

程式碼放在 Code Snippets 這類外掛或子主題,放法和備份方式見〈WooCommerce 結帳頁改成台灣習慣〉。

已經堆了很多,一次清掉

如果表已經大到後台打不開,等清理程序慢慢清太久了,可以用主機的 phpMyAdmin 手動清一次。動手前一定要完整備份資料庫。 先用查詢看看現在有多少筆:

-- 先看每種狀態各有幾筆
SELECT status, COUNT(*) AS n
FROM wp_actionscheduler_actions
GROUP BY status;

確認數字之後,刪掉 7 天前已經完成、失敗或取消的紀錄,再刪掉找不到對應工作的日誌:

-- 刪掉 7 天前已完成、失敗、取消的紀錄(待處理的不動)
DELETE FROM wp_actionscheduler_actions
WHERE status IN ('complete', 'failed', 'canceled')
  AND scheduled_date_gmt < UTC_TIMESTAMP() - INTERVAL 7 DAY;

-- 刪掉已經沒有對應工作的日誌
DELETE l FROM wp_actionscheduler_logs l
LEFT JOIN wp_actionscheduler_actions a ON l.action_id = a.action_id
WHERE a.action_id IS NULL;

幾個要注意的地方。表名前面的 wp_ 是預設的資料表前綴,你的網站可能不一樣,在 phpMyAdmin 左邊的資料表清單看得到。待處理(pending)和執行中(in-progress)的紀錄千萬不要刪,那是還沒做完的工作,例如下個月要扣款的訂閱。網路上有些教學是把某個狀態的紀錄全部刪掉,不分日期;保留最近 7 天,出問題時還有紀錄可以查。

其他常讓商店變慢的原因

排程動作清乾淨之後,如果還是慢,接下來看這幾個地方。

外掛裝太多、沒有測試就上線,是最常見的原因。功能相近的外掛裝了好幾個、早就不用的外掛沒有刪,每一個都可能在每次載入頁面時多做一些事,主機的 CPU 被吃到接近滿載的情況並不少見。每個外掛先在測試環境試過,確定需要再裝上正式網站。

資料庫本身也可以優化。WordPress 的資料表索引是照一般網站設計的,商品和訂單一多就不夠用,「Index WP MySQL For Speed」這個免費外掛會幫常用的資料表加上更合適的索引,我們維護的 WooCommerce 網站也有使用。主機如果有提供 Redis 這類物件快取,開起來也能減少重複查詢資料庫的次數。

最後是前台的速度:圖片壓縮、快取外掛、只載入需要的功能。這部分跟一般網站一樣,上線前的檢查可以看〈WordPress 網站上線前的檢查清單〉。

網站越用越順,需要有人照顧

網站上線只是開始,訂單、外掛、資料一直在增加,定期整理一次,比等到打不開才處理便宜得多。如果你的商店還在用社群和表單接單,可以先看〈IG 帳號不是你的資產〉。

MIMI 專做客製化網頁設計,購物車電商網站從建置到上線後的維護都能處理。MIMI 提供新北網頁設計服務,新北的網店可以用電話、Email 直接和設計師討論;費用可以先看首頁的製作費用參考,歡迎聯絡 MIMI。

WooCommerce「我的帳戶」頁整理:登入直接看訂單、選單改名、帳號用 Email
WooCommerce hook 入門:不改佈景主題,在商品頁、購物車加上自己的內容

發佈留言

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

我的車
願望清單
最近瀏覽過的
類別