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

如何获取WooCommerce支付方式ID?实现按金额隐藏指定支付方式

WooCommerce支付网关相关问题解答

一、获取支付网关ID的方法

  • 后台直观查看:进入WooCommerce设置 → 支付页面,鼠标悬停在目标支付方式的「编辑」链接上,浏览器状态栏会显示类似wp-admin/admin.php?page=wc-settings&tab=checkout&section=cod的URL,其中section=后面的字符串就是该支付网关的ID(比如示例中的cod是默认货到付款/现金支付的ID)。

  • 代码临时输出:将以下代码添加到当前主题的functions.php文件中,WordPress后台顶部会显示所有可用支付网关的ID和对应名称,用完记得删除这段代码:

add_action('admin_notices', 'print_all_payment_gateway_ids');
function print_all_payment_gateway_ids() {
    $gateways = WC()->payment_gateways->get_available_payment_gateways();
    echo '<div class="notice notice-info"><p>支付网关ID列表:</p><ul>';
    foreach ($gateways as $gateway) {
        echo '<li>' . $gateway->id . ' - ' . $gateway->title . '</li>';
    }
    echo '</ul></div>';
}
  • 常见默认网关ID:
    • cod:货到付款(现金支付默认ID)
    • paypal:PayPal标准支付
    • bacs:银行转账
    • cheque:支票支付
      第三方插件的网关ID需根据插件实际情况获取,比如支付宝插件可能为alipay。

二、实现订单金额小于3000时隐藏现金支付方式

你提供的代码存在变量未定义、逻辑位置错误等问题,以下是修正后的完整代码(替换现金支付网关ID即可使用):

add_filter( 'woocommerce_available_payment_gateways', 'hide_cash_payment_for_low_amount' );
function hide_cash_payment_for_low_amount( $available_gateways ) {
    // 仅在前台结账页面生效,避免后台订单编辑时出现异常
    if ( ! is_checkout() || is_admin() ) {
        return $available_gateways;
    }

    // 获取当前购物车/订单的总金额
    $total_amount = WC()->cart->total;

    // 替换为你实际的现金支付网关ID,默认是cod
    $cash_gateway_id = 'cod';

    // 当订单金额小于3000且该网关存在时,移除该支付方式
    if ( $total_amount < 3000 && isset( $available_gateways[$cash_gateway_id] ) ) {
        unset( $available_gateways[$cash_gateway_id] );
    }

    return $available_gateways;
}

代码说明:

  1. 增加了页面判断,只在前台结账页执行逻辑,防止后台操作出错;
  2. 正确获取订单总金额(从购物车对象中读取);
  3. 增加了网关存在性判断,避免因网关未启用导致的报错;
  4. 将函数名改为更贴合功能的命名,便于维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:25:10