概要
woocommerce_payment_gateways
フィルタは、WooCommerce の支払いゲートウェイをカスタマイズや拡張する際によく使用されます。このフィルタを利用することで、開発者は新しい支払いゲートウェイを追加したり、既存のゲートウェイを変更したり、特定の条件に基づいてゲートウェイを表示させないようにすることができます。具体的には、以下のような機能を実装する際によく利用されます。
- 新しい支払いゲートウェイの追加
- 特定の条件に応じた支払いオプションの非表示
- 支払いゲートウェイの設定の変更
- 支払い情報に関するフィールドの追加
- 支払い処理のフローのカスタマイズ
- スマートフォン用のモバイル専用コントロールの追加
このフィルタは、WooCommerce バージョン 2.0 以降で利用可能で、WordPress バージョン 4.0 以降でも動作します。
構文
add_filter('woocommerce_payment_gateways', 'my_custom_payment_gateway');
パラメータ
$gateways
: 現在の支払いゲートウェイの配列。
戻り値
$gateways
: 変更された支払いゲートウェイの配列。
サンプルコード
以下は、woocommerce_payment_gateways
フィルタを使用したサンプルコードです。
サンプルコード 1: 新しい支払いゲートウェイを追加
function my_add_custom_gateway($gateways) {
$gateways[] = 'WC_Gateway_Custom_Payment';
return $gateways;
}
add_filter('woocommerce_payment_gateways', 'my_add_custom_gateway');
このコードは、新しいカスタム支払いゲートウェイを WooCommerce に追加します。ユーザーはチェックアウト時にこの新しいオプションを選択できるようになります。
引用元: https://woocommerce.com/
サンプルコード 2: 特定条件での支払いゲートウェイの非表示
function my_hide_payment_gateway($available_gateways) {
if (is_admin() && !defined('DOING_AJAX')) {
return $available_gateways;
}
if (isset($available_gateways['cod'])) {
unset($available_gateways['cod']);
}
return $available_gateways;
}
add_filter('woocommerce_available_payment_gateways', 'my_hide_payment_gateway');
このコードは、特定の条件(例: ユーザーが特定の地域にいる場合)で「代金引換」を利用できないようにします。
引用元: https://docs.woocommerce.com/
サンプルコード 3: 支払いゲートウェイの設定の変更
function my_change_gateway_settings($settings) {
$settings['title'] = 'My Custom Payment Title';
return $settings;
}
add_filter('woocommerce_payment_gateways', 'my_change_gateway_settings');
このコードは、特定の支払いゲートウェイのタイトルをカスタマイズします。
引用元: https://developer.woocommerce.com/
サンプルコード 4: 支払い画面にフィールドを追加
function my_add_custom_field() {
echo '<div class="form-row">
<label for="my_custom_field">Custom Field</label>
<input type="text" class="input-text" name="my_custom_field" id="my_custom_field" />
</div>';
}
add_action('woocommerce_after_order_notes', 'my_add_custom_field');
このコードは、チェックアウトページにカスタム入力フィールドを追加します。
引用元: https://www.wpbeginner.com/
サンプルコード 5: 支払いゲートウェイのフローをカスタマイズ
function my_custom_payment_gateway_process($order_id) {
$order = wc_get_order($order_id);
// カスタム支払い処理
}
add_action('woocommerce_thankyou_custom_payment', 'my_custom_payment_gateway_process');
このコードは、特定の支払いゲートウェイの完了画面でカスタム処理を行う機能を追加します。
引用元: https://code.tutsplus.com/
この関数のアクションでの使用可能性
アクション名 | 使用可能性 |
---|---|
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 |