You are currently viewing WP大小事(二):文章及頁面無法發布更新

WP大小事(二):文章及頁面無法發布更新

本文重點:當文章及頁面突然無法更新或發佈時,逐一排查外掛,此次實例:藍新。

WPproblem2-0
文章及頁面突然無法更新或發佈

  繼上次的WP大小事(一),好不容易校正了登入問題,本來一切正常,發布頁面時,突然跑出「發布時發生錯誤」,連更新已有的頁面也顯示「更新時發生錯誤」,這樣的情況也發生在文章上……,但昨日還能正常地更新頁面,無論是使用elementor(無法進入)、或使用傳統編輯器都一樣的情形,清理緩存或換瀏覽器也無法排除。在此過程區間,我並未安裝其他外掛或動到其他設定,就突然產生了這樣的狀況;以防萬一,我也嘗試了關閉離最近的外掛們,也無法排除問題。

  爬文找不到符合得答案後,直接詢問FB社團-WordPress Taiwan 正體中文的前輩們,感謝前輩指路:試試看關掉所有外掛或換掉佈景主題。最後一個一個停用測試,發現是藍新金流造成的問題,停用該外掛就好了。

  但這是件很弔詭的事情,藍新金流我早就已經啟用許久,個人懷疑是因為某些外掛自動更新造成的外掛衝突,或是佈景主題帶來的設計缺陷問題,我其實不滿我的佈景主題已久…..,後面的WP大小事(三)將會提到他對elementor帶來了什麼影響。另外也表示外掛可能盡量不要啟用自動更新,而是定期手動更新,但更新前切記要記得備份,一旦出狀況才能立刻還原。還有最重要的,用不到的外掛占用系統資源,又如同一個未爆彈,就停用或刪掉吧!

Sombra 2022.05.14

於2022.05.16補充:
  有個問題其實並未解決,那就是-我真的需要使用藍新金流這個外掛怎麼辦?!
  這邊查到的方法>>>參考網站(連結),可以透過外掛編輯器(外掛-外掛編輯器)修正藍新的程式缺陷,修正class-newebpay.php,用條件判斷式迴避問題;因為該網站相當詳盡,就不另外贅述。針對紅字部分補上條件式及補上更動資訊(Author我保留原參考網址的作者名字:Jerry,除了致敬外,方便未來有問題可以反向查找);並請注意作者本身列的程式碼只是局部,切勿直接全部拷貝貼上,請針對紅字更新即可;更新前,請務必留存原有程式碼,方便出問題時校正,並於每次外掛更新時,留意原有問題是否依然存在,是,則再次手動校正。

步驟1:更新修訂訊息,以區別原本及校訂版(請務必備份原有的程式碼留存,以避免突發狀況)

<?php
/**
 * newebpay Payment Gateway
 * Plugin URI: http://www.newebpay.com/
 * Description: 藍新金流收款/物流 模組 修復了 elementor 開啟會有 wc_get_chosen_shipping_method_ids 錯誤的問題 
 * Version: 99.99.99
 * Author URI: http://www.newebpay.com/
 * Author: 藍新金流 newebpay 修改過 By Jerry
 * Plugin Name:   藍新金流
 * @class       newebpay

步驟2:找到螢光字標示得區塊,於else if中加入紅字串

    // 選擇藍新金流超商取貨後 payment只輸出藍新金流
    function newebpay_alter_payment_gateways($list) {
        if(isset($_GET['pay_for_order']) && isset($_GET['key'])) {
            $order_id = wc_get_order_id_by_order_key($_GET['key']);
            $order = wc_get_order($order_id);
            if($order->has_shipping_method('newebpay_cvscom')) {
                $list = array('WC_newebpay');
            }
        } elseif(!is_admin()) { //後台無wc_get_chosen_shipping_method_ids function
            if ( !function_exists( 'wc_get_chosen_shipping_method_ids' ) ) { 
                return $list;
            } 
            $chosen_shipping = wc_get_chosen_shipping_method_ids();
            //判斷購物車內商品是否全為虛擬商品 全為虛擬商品時會無法選擇物流方式 導致session的chosen_shipping會維持上次所選
最終修訂結果 by Sombra實測

衝突版本:
(Jerry) 原文版:wordpress 核心版本為 5.8.1 , Elementor 版本為 3.4.3 ,藍新1.0.3
(Sombra)我的:wordpress 核心版本為 5.9.3 , Elementor 版本為 3.3.1 ,藍新1.0.2
校正後藍新版本將變為我們自訂的99.99.99,以顯示為自訂版

參考來源:
1、WordPress Taiwan 正體中文(FB社團)
 https://www.facebook.com/photo/?fbid=5486047938073687&set=gm.5582778695082858
2、育心文具行 by Jerry
 https://hipster.crazyjerry.studio/post/293/


發佈留言