網頁設計

訂單狀態顯示「待付款」(On-Hold),WooCommerce不會發送電子郵件,導致少上線的店長會驚訝地看到上個月有個訂單正在 "等待付款",其實是信用卡或 Paypal 付款頁沒完成就離開了!

這不只是嚇到店長而已,商品庫存也會扣著,可能導致庫存量過低的假象。

WooCommerce 的等待付款其實沒意義,因為付款出問題,購物車也無法回復,客戶只能重新買一次...這應該在新版有改進,或者有外掛可用?

總之,目前最快的解決辦法是用"保留庫存" (在 Woocommerce 的設定>商品>庫存),設定幾分鐘後,"等待付款"會自動變成"取消",取消的訂單有通知信。

WP Crontrol 外掛可以看到這樣的排程,方便除錯:

https://tw.wordpress.org/plugins/wp-crontrol/

可惜的是,這樣自動取消的訂單,還是沒有通知信...XD

只好自己加程式,可參考官方的樣板,得知在哪邊加比較方便:

https://woocommerce.github.io/code-reference/hooks/hooks.html

找 unpaid 這個字,找到: woocommerce_cancel_unpaid_orders()

[code]add_filter('woocommerce_cancel_unpaid_order','woocommerce_cancel_unpaid_order_WCC',20,2);
function woocommerce_cancel_unpaid_order_WCC( $ret, $order ){
    WC()->mailer()->get_emails()['WC_Email_Cancelled_Order']->trigger( $order->get_id() );
    
    return $ret;
}[/code]
如果 $ret 是 False ,那就不會取消,可以用來重複測試寄信程式,只是,需要去設定幾分鐘那邊重刷網頁,以便設定新的排程。

新的網頁空間需要調整:

  • PHP 7.2 切換到 PHP 7.4
  • PHP 7.4 Default option 也需要跟著調,只要查看 Wordpress 的網站狀態的建議就知道哪些模組需要去打勾
  • PHP錯誤訊息: PHP Deprecated: Function create_function() is deprecated in /home/XXXXX/public_html/wp-content/themes/YYYYY/cherry-framework/setup.php on line 14,這個錯誤將導致後台在外觀的設定錯亂,就算是程式修正也無法復原。該程式的 create_function... 需換成下列程式,至於如何修復後台外觀自訂,將在下一點說明
return function () {         
    global $chery_core_version;
    
    $path = trailingslashit( dirname( __FILE__ ) ) . 'cherry-core.php';
    
    $data = get_file_data( $path, array(
        'version' => 'Version'
    ) );
    
    if ( isset( $data['version'] ) ) {                 
         $version = $data['version'];
    }         
    
    $old_versions = null;
    
    if ( null !== $chery_core_version ) {                 
         $old_versions = array_keys( $chery_core_version );         
    }
    
    if ( is_array( $old_versions ) && isset( $old_versions[0] ) ) {                 
         $compare = version_compare( $old_versions[0], $version,'<' );
         
         if ( $compare ) {                         
             $chery_core_version = array();
             $chery_core_version[ $version ] = $path;                 
         }         
    } else {
         $chery_core_version = array();
         $chery_core_version[ $version ] = $path;         
} }; 
  • 修復後台Theme的外觀自訂:
  1. switch to another default theme (I used twenty nineteen) and re-assign a primary menu.
  2. jump into the db and search in the options for 'theme_mods_' there should be one for each theme in there. One is your broken theme and you should fine the other one twentynineteen.
  3. copy the options value from twenty nineteen and set it for the value for your broken theme. Then switch it back and assign the primary menu again.

原理大概就是去複製正常運作過的 Theme 所儲存的資料,然後再回來重新設定一次 Theme 的自訂,當然,這些操作的前提是,程式需要先修復,不然連其他 Theme 的資料都被毀了!

  • PHP 7.4 錯誤訊息: Trying to access array offset on value of type null... 導致 Wordpress 5.3.8 的媒體上傳功能 (file.php) 故障,這個問題有 PHP 7.4 的修正更新,但是虛擬主機就沒這個彈性了,而且: Previous versions of PHP may have been less strict on such mistakes and silently swallowed the error / notice while 7.4 does not do this anymore. 所以這是 PHP 7.4 變得比較嚴謹所導致,不該讓 PHP 走回頭路,最好能改網站程式,這樣只好期待 Wordpress 更新了! 暫時降版到 PHP 7.3 了

 

完成 Localhost 的安裝後,可進一步改成正式的網址 https://www.網域名稱

在 c:\xampp\apache\conf\extra\httpd-ssl.conf

找到 <VirtualHost _default_:443> 這個區段

DocumentRoot 網站的檔案路徑
ServerName 網域名:443
ServerAdmin 管理者信箱

往下找,放入申請到的三個檔 (到 http://sslforfree.com/ 申請),假設都放在 c:\xampp\apache\conf\ssl

SSLCertificateFile "conf/ssl/certificate.crt"

SSLCertificateKeyFile "conf/ssl/private.key"

SSLCACertificateFile "${SRVROOT}/conf/ssl/ca_bundle.crt"

上面的 ${SRVROOT}/ 只是抄原有的寫法,應該可以去掉

 

設定 WAN 的 虛擬伺服器

如果網路環境是分享器,須設定 WAN 的 虛擬伺服器,以開通 80,443 port,指向 Localhost 的 IP

 

在這檔案

/wp-content/plugins/cherry-plugin/includes/widgets/widgets-manager.php

找到

if ( !isset($wp_registered_widgets[$id]) ) continue;

把 continue 改成 return false 即可

因為那邊沒有迴圈 XD

 

指令不容易記,所以將安裝 Ubuntu 過程紀錄一下

安裝為繁體中文版 ubuntu

安裝中文輸入法:新酷音輸入法

在終端機執行:sudo apt install ibus-chewing

須重新登入才有效,然後在〝地區與語言〞增加輸入法「chinese(chewing)」

忘記 root 密碼

登入一般帳號後,執行:sudo passwd root

建立捷徑在桌面
第一次可能需要安裝,訊息中會提示安裝指令
gnome-desktop-item-edit --create-new ~/桌面/
有趣的是,上述指令作成捷徑是無效的,執行時只看到畫面稍微抖一下


待續…

Go to top