博客 / WooCommerce/ 如何自定义WooCommerce支付网关的标题和描述?

如何自定义WooCommerce支付网关的标题和描述?

如何自定义WooCommerce支付网关的标题和描述?

前言

在WooCommerce商店中,支付网关的标题和描述是客户在结账时看到的关键信息。默认的显示方式可能不符合您的品牌或业务需求。本文将详细介绍如何通过代码和过滤器(Filter)自定义这些文本,确保使用官方推荐的方法,避免重复造轮子。

核心方法:使用WooCommerce过滤器

WooCommerce提供了强大的过滤器系统来修改支付网关的显示信息。主要涉及以下两个过滤器:

  • woocommerce_gateway_title: 用于修改支付网关的标题。
  • woocommerce_gateway_description: 用于修改支付网关的描述。

基本代码示例

将以下代码添加到您子主题的 functions.php 文件中,或使用代码片段插件。

/**
 * 自定义支付网关标题和描述
 */
add_filter('woocommerce_gateway_title', 'custom_payment_gateway_title', 10, 2);
add_filter('woocommerce_gateway_description', 'custom_payment_gateway_description', 10, 2);

function custom_payment_gateway_title($title, $gateway_id) {
    // 根据网关ID进行条件判断
    if ($gateway_id === 'cod') {
        $title = '💵 货到付款';
    } elseif ($gateway_id === 'bacs') {
        $title = '🏦 银行转账';
    } elseif ($gateway_id === 'cheque') {
        $title = '📄 支票支付';
    }
    // 可以继续添加其他网关
    return $title;
}

function custom_payment_gateway_description($description, $gateway_id) {
    // 根据网关ID自定义描述
    if ($gateway_id === 'bacs') {
        $description = '请使用以下银行账户信息进行转账。转账后请通过邮件或电话通知我们,以便及时处理您的订单。';
    } elseif ($gateway_id === 'cod') {
        $description = '商品送达时,支付现金给配送员。';
    }
    return $description;
}

进阶应用与最佳实践

1. 针对特定支付网关(如PayPal)

如果您安装了第三方网关(如PayPal标准版),其ID通常是 paypal。请查看网关设置页面或文档以确认其ID。

// 在之前的函数中添加PayPal的条件判断
if ($gateway_id === 'paypal') {
    $title = '🔗 PayPal 安全支付';
    // 或者修改描述
    // $description = '通过PayPal快速安全地完成支付。';
}

2. 根据条件动态显示

您可以结合购物车金额、用户角色或配送地区来动态改变文本。

function custom_payment_gateway_title_conditional($title, $gateway_id) {
    if ($gateway_id === 'cod' && WC()->cart->total > 500) {
        // 如果订单金额超过500,则不显示“货到付款”
        return '大额订单暂不支持货到付款';
    }
    return $title;
}
add_filter('woocommerce_gateway_title', 'custom_payment_gateway_title_conditional', 10, 2);

3. 使用多语言支持

如果您的网站是多语言的(使用WPML或Polylang),请确保文本可被翻译插件识别。

if ($gateway_id === 'bacs') {
    $title = __('银行转账', 'your-text-domain');
    $description = __('请使用以下银行账户信息...', 'your-text-domain');
}

注意事项

  • 安全第一:修改主题的 functions.php 前,请做好备份。建议使用子主题。
  • 网关ID:确保使用的 $gateway_id 准确无误。您可以在WooCommerce设置-支付页面找到每个网关的ID。
  • 代码优先级:过滤器优先级(第三个参数)默认为10,数字越大执行越晚。通常无需修改。
  • 缓存:修改后请清除所有缓存(包括对象缓存、页面缓存)以确保更改生效。

总结

通过使用 woocommerce_gateway_titlewoocommerce_gateway_description 这两个官方过滤器,您可以轻松、安全地自定义任何支付网关的显示文本。这种方法完全遵循WooCommerce的开发规范,是未来兼容性最佳的选择。建议从简单的条件替换开始,再根据业务需求添加更复杂的逻辑。

发表评论

您的邮箱不会公开。必填项已用 * 标注。