プラグインWooCommerceのwoocommerce_available_payment_gatewaysフィルタの使用方法・解説

概要

woocommerce_available_payment_gateways フィルタは、WooCommerceの支払いゲートウェイをカスタマイズする際に使用されます。このフックを利用すると、利用可能な支払い方法のリストを変更したり、特定の条件に基づいて支払い方法を表示または非表示にしたりすることが可能です。具体的には、以下のような機能を実装する際によく使われます。

  1. 特定の条件に基づいて支払い方法を制御する(例:地域、顧客の役割など)。
  2. カスタム支払いゲートウェイを追加または削除する。
  3. 支払い方法の順序を変更する。
  4. 特定のユーザー向けに支払い方法を変更する。
  5. クーポンや特別オファーに関連する支払い方法を表示する。
  6. デフォルトの支払いゲートウェイを変更する。

構文

add_filter('woocommerce_available_payment_gateways', 'your_custom_function');

パラメータ

  • array $gateways: 利用可能な支払いゲートウェイの配列。

戻り値

  • array: 調整された支払いゲートウェイの配列。

使用可能なプラグインおよびバージョン

  • WooCommerce バージョン: 5.0.0 以降
  • WordPress バージョン: 5.0.0 以降

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード1: 地域による支払い方法の制御

add_filter('woocommerce_available_payment_gateways', 'restrict_payment_gateways_by_country');

function restrict_payment_gateways_by_country($gateways) {
    if (isset($_POST['billing_country']) && $_POST['billing_country'] === 'JP') {
        unset($gateways['paypal']);
    }
    return $gateways;
}

このサンプルコードは、顧客が日本の住所を記入した場合にPayPal支払いを無効にします。

サンプルコード2: 特定のユーザー向けの支払い方法の変更

add_filter('woocommerce_available_payment_gateways', 'custom_payment_gateway_for_specific_user');

function custom_payment_gateway_for_specific_user($gateways) {
    if (is_user_logged_in() && current_user_can('administrator')) {
        $gateways['stripe'] = $gateways['stripe']; // Stripeを追加
    } else {
        unset($gateways['stripe']); // 一般ユーザーにはStripeを非表示に
    }
    return $gateways;
}

このコードは、管理者ユーザーにのみStripeを表示し、その他のユーザーには非表示にします。

サンプルコード3: 支払い方法の順序の変更

add_filter('woocommerce_available_payment_gateways', 'change_payment_gateway_order');

function change_payment_gateway_order($gateways) {
    if (isset($gateways['bacs']) && isset($gateways['cheque'])) {
        $bacs = $gateways['bacs'];
        unset($gateways['bacs']);
        $gateways = array('bacs' => $bacs) + $gateways; // BACSを最初の位置に移動
    }
    return $gateways;
}

このサンプルコードは、BACS (銀行振込) を支払いゲートウェイリストの最初に移動させます。

サンプルコード4: カスタム支払いゲートウェイの追加

add_filter('woocommerce_available_payment_gateways', 'add_custom_payment_gateway');

function add_custom_payment_gateway($gateways) {
    $gateways['custom_gateway'] = array(
        'id' => 'custom_gateway',
        'title' => 'Custom Payment Gateway',
        'description' => 'Pay using the custom payment gateway.',
        'enabled' => 'yes'
    );
    return $gateways;
}

このコードは、カスタム支払いゲートウェイを追加し、WooCommerceの支払いオプションに表示します。

サンプルコード5: クーポンに関連した支払い方法の表示

add_filter('woocommerce_available_payment_gateways', 'show_payment_gateway_if_coupon_used');

function show_payment_gateway_if_coupon_used($gateways) {
    if (WC()->cart->has_discount()) {
        $gateways['cod'] = $gateways['cod']; // 代金引換を追加
    }
    return $gateways;
}

このサンプルは、クーポンが使用されている際に代金引換(Cash on Delivery)を支払い方法に追加します。

この関数について質問する


上の計算式の答えを入力してください