duanmeng3573 2018-03-21 11:50
浏览 408
已采纳

根据Woocommerce选择的付款方式,在结账时更改付款按钮

Hi Anyone knows how to change Pay button on checkout based on chosen payment method? I found something but I don't know if I could turn it into a snippet in function.php? Thank you.

    public function __construct() {
    $this->id = 'ry_ecpay_atm';
    $this->has_fields = false;
    $this->order_button_text = __('Pay via ATM', RY_WT::$textdomain);
    $this->method_title = __('ECPay ATM', RY_WT::$textdomain);
    $this->method_description = '';
  • 写回答

3条回答 默认 最新

  • drqvsx1228 2018-03-21 13:58
    关注

    This can be done with the following code (where you will set your payment gateway IDs and the corresponding desired button text):

    add_filter('woocommerce_order_button_text', 'custom_order_button_text' );
    function custom_order_button_text( $order_button_text ) {
        $default = __( 'Place order', 'woocommerce' ); // If needed
        // Get the chosen payment gateway (dynamically)
        $chosen_payment_method = WC()->session->get('chosen_payment_method');
    
        // Set your payment gateways IDs in EACH "IF" statement
        if( $chosen_payment_method == 'bacs'){
            // HERE set your custom button text
            $order_button_text = __( 'Bank wire payment', 'woocommerce' ); 
        } elseif( $chosen_payment_method == 'ry_ecpay_atm'){
            // HERE set your custom button text
            $order_button_text = __( 'Place order via ECPay', 'woocommerce' ); 
        }
        // jQuery code: Make dynamic text button "on change" event ?>
        <script type="text/javascript">
        (function($){
            $('form.checkout').on( 'change', 'input[name^="payment_method"]', function() {
                var t = { updateTimer: !1,  dirtyInput: !1,
                    reset_update_checkout_timer: function() {
                        clearTimeout(t.updateTimer)
                    },  trigger_update_checkout: function() {
                        t.reset_update_checkout_timer(), t.dirtyInput = !1,
                        $(document.body).trigger("update_checkout")
                    }
                };
                t.trigger_update_checkout();
            });
        })(jQuery);
        </script><?php
    
        return $order_button_text;
    }
    

    Code goes in function.php file of your active child theme (or theme). Tested and works.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法