You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于WooCommerce选定支付方式修改结账页支付按钮

嘿,这个问题我太熟悉了!咱们一步步来把你手里的代码改成能放到function.php里的可用片段~

首先得说清楚:你贴的这段代码是RY ECPay ATM支付网关类的构造函数部分,直接把这段代码丢进function.php肯定不行,因为它是类的一部分,单独拿出来会报错。咱们得用WooCommerce提供的钩子(Hooks)来实现同样的效果,不用直接修改类文件。

下面给你两个实用的方案,按需选就行:

方案1:仅当用户选中该支付方式时,修改结账按钮文本

这个方案会在用户结账页面选了「ECPay ATM」之后,自动把支付按钮改成你想要的文本,其他支付方式保持默认。把这段代码加到当前主题的function.php末尾(或者用代码片段插件更安全):

add_filter( 'woocommerce_order_button_text', 'custom_ecpay_atm_order_button_text' );
function custom_ecpay_atm_order_button_text( $text ) {
    // 获取当前用户选中的支付方式
    $chosen_gateway = WC()->session->get('chosen_payment_method');
    
    // 匹配你代码里的支付网关ID:ry_ecpay_atm
    if ( $chosen_gateway === 'ry_ecpay_atm' ) {
        // 修改成你想要的按钮文本,文本域和原插件保持一致
        $text = __( 'Pay via ATM', 'ry_wt' );
    }
    
    return $text;
}

方案2:直接修改该支付网关的默认设置

如果你想永久修改这个支付网关的按钮文本、名称甚至描述,不管用户选没选都生效,就用这个代码:

add_filter( 'woocommerce_payment_gateways', 'custom_modify_ecpay_atm_gateway' );
function custom_modify_ecpay_atm_gateway( $gateways ) {
    foreach ( $gateways as $gateway ) {
        // 匹配目标支付网关ID
        if ( $gateway->id === 'ry_ecpay_atm' ) {
            // 修改按钮文本
            $gateway->order_button_text = __( 'Pay via ATM', 'ry_wt' );
            // 修改网关显示名称
            $gateway->method_title = __( 'ECPay ATM', 'ry_wt' );
            // 还可以修改网关描述(可选)
            $gateway->method_description = '通过ATM转账完成支付,转账后请耐心等待系统确认到账';
            break;
        }
    }
    return $gateways;
}

小提醒:

  • 不要直接修改主题或插件的核心文件,用代码片段插件(比如Code Snippets)添加代码,避免主题更新后代码丢失。
  • 代码里的'ry_wt'是原插件的文本域,如果不需要多语言支持,可以直接写死字符串,比如'Pay via ATM'。
  • 添加完代码后记得清空网站缓存,刷新结账页面测试效果~

内容的提问来源于stack exchange,提问作者Hsin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:38:10