解決 WooCommerce Checkout Manager 錯誤,恢復 RY Tools 綠界超商訂單列印功能

最近發現購物網站如果同時使用到 WordPress WooCommerce Checkout Manager 與 RY Tools for WooCommerce 時,會發生綠界訂單無法在Wordpress 中列印。開啟 Debug 功能後發現

Fatal error: Uncaught Error: Call to undefined method WP_Post::get_id() in /wp-content/plugins/woocommerce-checkout-manager/lib/controller/class-order.php:194

解決方案

修改檔案 /wp-content/plugins/woocommerce-checkout-manager/lib/controller/class-order.php
找到第 194 行(或搜尋 get_id() 相關的程式碼),應該會看到如下內容:

$id = $post->get_id();

修改成

$id = $post->ID;

注意:直接修改外掛檔案可能會在外掛更新時被覆蓋,建議先備份檔案或建立子外掛來進行覆蓋修正。

這個錯誤主要是因為 WooCommerce Checkout Manager 外掛中使用了 get_id() 方法,而 WP_Post 物件並不支援該方法。解決方案包括:

  1. 更新外掛,看開發者是否已經修正問題。
  2. 手動修改程式碼,將 $post->get_id() 改為 $post->ID

這個錯誤可能影響 RY Tools for WooCommerce 的綠界超商訂單列印功能,希望這篇文章能幫助你修正錯誤,恢復正常運作!

過去這個錯誤可能沒有出現,可能有以下幾個原因:

  1. 舊版本的 WooCommerce Checkout Manager
    之前的版本可能並未使用 get_id() 方法,而是使用正確的 $post->ID,後來某次更新時開發者誤用了 get_id() 方法。
  2. 不同的 WordPress 或 WooCommerce 版本兼容性
    舊版本的 WordPress 或 WooCommerce 可能有一些相容性修正,使得即便 get_id() 方法不存在,系統仍然可以正常運作。但新版本可能更加嚴格,導致錯誤顯示。
  3. PHP 版本升級
    舊版本的 PHP 可能容忍某些錯誤(例如未定義的方法被忽略),但新版本的 PHP(如 PHP 7 以上)對於不存在的方法更加嚴格,因此才會拋出 Fatal error
  4. 其他外掛或主題影響
    某些外掛或主題可能在過去定義了 WP_Post 類別的擴充功能,例如透過 add_filterclass extension 來新增 get_id() 方法,而最近的更新移除了這種擴充。
  5. 外掛程式碼近期修改
    如果 WooCommerce Checkout Manager 最近有更新,開發者可能不小心引入了 get_id() 的用法,而沒有測試其相容性。

發佈留言

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