Social icon element need JNews Essential plugin to be activated.
星期日, 2 4 月, 2023
No Result
View All Result
育心文具行

育心文具行

  • 首頁
  • 創作x紀錄
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 當紅俱樂部
  • 留言給我
育心文具行
  • 首頁
  • 創作x紀錄
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 當紅俱樂部
  • 留言給我
No Result
View All Result
育心文具行
Home 心得x體驗

WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理

2021-09-11
in 心得x體驗
Reading Time: 2 mins read
Share on FacebookShare on Twitter

WordPress 有很多外掛,在藍新金流啟用時,同時有使用 Elementor 這個 page builder 外掛,在某些編輯視窗中,可能會造成 AJAX “/wp-json/elementor/v1/globals” 路徑中抓不到 wc_get_chosen_shipping_method_ids() 這個 function 的錯誤訊息。

這邊查了一下資料,不只是藍新金流外掛會這樣,應該 woocommerce 外掛和 page builder 都有可能造成類似的錯誤。紀錄一下避免老了忘記。

附上錯誤訊息:

Fatal error: Uncaught Error: Call to undefined function wc_get_chosen_shipping_method_ids() in /xxx/wp-content/plugins/newebpay/class-newebpay.php:1676 Stack trace: #0 /xxx/wp-includes/class-wp-hook.php(303): newebpay_alter_payment_gateways(Array) ...

附上發現錯誤的版本資訊,wordpress 核心版本為 5.8.1 , Elementor 版本為 3.4.3:

/**
 * newebpay Payment Gateway
 * Plugin URI: http://www.newebpay.com/
 * Description: 藍新金流收款/物流 模組
 * Version: 1.0.3
 * Author URI: http://www.newebpay.com/
 * Author: 藍新金流 newebpay
 * Plugin Name:   藍新金流
 * @class       newebpay
 * @extends     WC_Payment_Gateway
 * @version
 * @author  Pya2go Libby
 * @author  Pya2go Chael
 * @author  Spgateway Geoff
 * @author  Spgateway_Pay2go Q //20170217 1.0.1
 * @author  Spgateway_Pay2go jack //20170622 1.0.2
 * @author  Spgateway_Pay2go Stally //20180420 1.0.3 20181018 1.0.4 20181222 newebpay 1.0.0 20190417 1.0.1 20190711 1.0.2 20200326 1.0.3
 */

目前的解決方法是在 class-newebpay.php:1676 的 newebpay_alter_payment_gateways() 內添加判斷,檢查是否有方法,沒方法就直接跳回不動作。
另外也在 plugin meta 上修改版本號和描述,避免被直接更新。不過這個外掛也沒上版控,所以屆時可能需要也是手動更新嘍。

附上修改後資訊:

<?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
 * @extends     WC_Payment_Gateway
 * @version
 * @author  Pya2go Libby
 * @author  Pya2go Chael
 * @author  Spgateway Geoff
 * @author  Spgateway_Pay2go Q //20170217 1.0.1
 * @author  Spgateway_Pay2go jack //20170622 1.0.2
 * @author  Spgateway_Pay2go Stally //20180420 1.0.3 20181018 1.0.4 20181222 newebpay 1.0.0 20190417 1.0.1 20190711 1.0.2 20200326 1.0.3
 */
add_action('plugins_loaded', 'newebpay_gateway_init', 0);

function newebpay_gateway_init() {
    if (!class_exists('WC_Payment_Gateway')) {
        return;
    }

    class WC_newebpay extends WC_Payment_Gateway {

 ...

    // 選擇藍新金流超商取貨後 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會維持上次所選
            $virtual_count = 0;
            $cart_items = WC()->cart->get_cart();
            foreach ( $cart_items as $key => $cart_item ) {
                $virtual_count += ($cart_item['data']->is_virtual()) ? 1 : 0;
            }
            if(@ in_array('newebpay_cvscom', $chosen_shipping) && $virtual_count < count($cart_items)) {
                $list = array('WC_newebpay');
            }
        }

        return $list;
    }
    add_filter('woocommerce_payment_gateways', 'newebpay_alter_payment_gateways', 100);

...
Tags: elementornewebpayphpwordpress藍新
Share22Tweet14Share6
Previous Post

Linux SSH 斷線後保持 session 的工具 – Screen

Next Post

WordPress SSL 錯誤修復

Next Post

Wordpress SSL 錯誤修復

Wordpress 核心架構圖/堆棧圖 相關檔案結構說明鏈結

購物車串接第三方金流 session 會被清空的原因

Comments 2

  1. JCL says:
    1 年 ago

    這個問題花了我好多時間才發現原來是藍新的問題
    原本不只ELEMENTOR無法開啟,連裡面的CONTACT FORM小工具也會出錯,測試寄不出去,顯示 “這個網站有重大的問題” ><"
    我照你寫的加進去就恢復正常了
    太感謝了!!

    回覆
    • Jerry Lin says:
      1 年 ago

      不客氣,我也是遇到去找來的答案ww

發佈留言 取消回覆

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

這個網站採用 Google reCAPTCHA 保護機制,這項服務遵循 Google 隱私權政策及服務條款。

全站搜尋

No Result
View All Result

近期文章

  • PHP Codeigniter 4 框架速度優化
  • 《自慢10:18項修練》第四部讀書心得
  • 網頁製作,外包要注意的事情
  • 《自慢10:18項修練》第三部讀書心得
  • 在 Mac 上,大型 CSV 檔案切割方法

分類

  • 創作x紀錄 (12)
  • 心得x體驗 (32)
  • 筆記x備忘 (26)
  • 閒談x雜記 (4)

贊助買咖啡

Social icon element need JNews Essential plugin to be activated.

標籤

22.04 android centos Channel Access Token composer dart dev dist f facebook flutter gist git git hook gitignore highlight hook ios line linode linux MAC php php7.3 php8 QBQ!問題背後的問題 sdk sublime sublime3 ubuntu vps vue vue.js vue3 wordpress 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 意志力 權限 自慢10 自慢10:18項修練 規格 調整硬碟空間 調整規格 讀書心得

文章分類

  • 創作x紀錄 (12)
  • 心得x體驗 (32)
  • 筆記x備忘 (26)
  • 閒談x雜記 (4)

近期文章

  • PHP Codeigniter 4 框架速度優化
  • 《自慢10:18項修練》第四部讀書心得
  • 網頁製作,外包要注意的事情
  • 《自慢10:18項修練》第三部讀書心得
  • 在 Mac 上,大型 CSV 檔案切割方法

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.

No Result
View All Result
  • 首頁
  • 創作x紀錄
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 當紅俱樂部
  • 留言給我

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.