プラグインWooCommerceのwc_payment_gateways_initializedアクションの使用方法・解説

概要

wc_payment_gateways_initializedアクションは、WooCommerceが支払いゲートウェイを初期化する際に呼び出されるフックです。このアクションを使用することで、以下のような機能を実装する際によく使われます:

  1. カスタム支払いゲートウェイの追加
  2. 既存の支払いゲートウェイの設定の変更
  3. 特定の条件に基づいて支払い方法の表示制御
  4. カスタムフィールドの追加や変更
  5. レポートやロギングを使った支払いドラフトの生成
  6. 支払いゲートウェイに対する追加的な検証の実施

構文

add_action('woocommerce_payment_gateways_initialized', 'your_function_name');

パラメータ

このアクションには特定のパラメータはありませんが、呼び出されるとWooCommerceの支払いゲートウェイのインスタンスにアクセスすることができます。

戻り値

このアクション自体は値を返しませんが、フック内での処理によりインスタンスの変更を行うことができます。

使用可能なバージョン

  • WooCommerce: 3.0以上
  • WordPress: 4.0以上

サンプルコード

サンプルコード 1

add_action('woocommerce_payment_gateways_initialized', 'add_custom_gateway');

function add_custom_gateway() {
    if ( ! class_exists('WC_Gateway_Custom') ) {
        class WC_Gateway_Custom extends WC_Payment_Gateway {
            public function __construct() {
                $this->id = 'custom_gateway';
                $this->title = __('Custom Gateway', 'text-domain');
                $this->init_form_fields();
                $this->init_settings();
            }

            public function process_payment($order_id) {
                $order = wc_get_order($order_id);
                // ここで支払い処理を行う
                return array(
                    'result'   => 'success',
                    'redirect' => $order->get_checkout_order_received_url(),
                );
            }
        }
    }
}

このコードは、WooCommerceのカスタム支払いゲートウェイを登録する方法を示しています。

サンプルコード 2

add_action('woocommerce_payment_gateways_initialized', 'add_custom_settings');

function add_custom_settings() {
    $gateway = new WC_Gateway_Cash_On_Delivery();
    $gateway->enabled = 'yes';
    $gateway->title = __('Cash on Delivery', 'text-domain');
    // さらに設定を追加する
}

このコードは、カスタム設定を既存の「代金引換」支払いゲートウェイに追加します。

サンプルコード 3

add_action('woocommerce_payment_gateways_initialized', 'modify_payment_gateway');

function modify_payment_gateway() {
    global $woocommerce;
    $gateways = $woocommerce->payment_gateways->payment_gateways();

    foreach ($gateways as $gateway) {
        if ($gateway->id === 'stripe') {
            $gateway->title = 'Modified Stripe Gateway Title';
        }
    }
}

このコードは、Stripeゲートウェイのタイトルを変更する方法を解説しています。

サンプルコード 4

add_action('woocommerce_payment_gateways_initialized', 'conditional_gateway_display');

function conditional_gateway_display() {
    if ( ! is_user_logged_in() ) {
        unset( $gateways['paypal'] ); // PayPalを非表示に
    }  
}

このコードは、ユーザーがログインしていない場合に特定の支払いゲートウェイ(PayPal)を非表示にします。

サンプルコード 5

add_action('woocommerce_payment_gateways_initialized', 'logger_for_payment_gateways');

function logger_for_payment_gateways() {
    $gateways = WC()->payment_gateways->get_available_payment_gateways();
    error_log('Available Payment Gateways: ' . implode(',', array_keys($gateways)));
}

このコードは、利用可能な支払いゲートウェイのリストをログに記録します。

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

アクション 使用可能性
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

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


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