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

概要

woocommerce_get_order_payment_tokens フィルタは、WooCommerceでの支払い方法のトークンを取得またはフィルタリングするために使用されます。このフックを使用することで、開発者は特定の条件に基づいて、顧客の支払い方法のトークンを変更したり、追加したりすることが可能です。この機能は、以下のようなシナリオでよく使われます。

  1. 顧客が選択した特定の支払い方法に基づいてトークンをフィルタリングする。
  2. 過去の支払い履歴に基づいて、おすすめの支払い方法を表示する。
  3. セキュリティ上の理由から特定のトークンを削除する。
  4. 特定のユーザーグループに対して異なるトークンを提供する。
  5. プラグインが追加した新しい支払い方法のトークンを統合する。
  6. カスタムデザインやUI要件に基づいてトークンの表示順序を変更する。

構文

add_filter( 'woocommerce_get_order_payment_tokens', 'my_custom_payment_tokens', 10, 2 );

パラメータ

  • $tokens (array): 支払いトークンの配列。
  • $order_id (int): 対象の注文ID。

戻り値

  • array: 変更された支払いトークンの配列。

使用可能なバージョン

  • WooCommerce バージョン: 3.0以上
  • WordPress バージョン: 4.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_get_order_payment_tokens', 'filter_payment_tokens', 10, 2 );

function filter_payment_tokens( $tokens, $order_id ) {
    // 特定の条件に基づいてトークンを削除
    foreach ( $tokens as $key => $token ) {
        if ( $token->get_id() === 'specific_token_id' ) {
            unset( $tokens[$key] );
        }
    }
    return $tokens;
}

引用元: https://developer.woocommerce.com

サンプルコード 2: 新しい支払いトークンの追加

このサンプルコードは、カスタム支払いトークンを追加します。

add_filter( 'woocommerce_get_order_payment_tokens', 'add_custom_payment_token', 10, 2 );

function add_custom_payment_token( $tokens, $order_id ) {
    $tokens[] = new WC_Payment_Token(array(
        'id' => 'new_token_id',
        'gateway_id' => 'custom_gateway',
        'user_id' => get_current_user_id(),
    ));
    return $tokens;
}

引用元: https://woocommerce.com

サンプルコード 3: トークンのソート順を変更

このサンプルコードは、支払いトークンの表示順を変更します。

add_filter( 'woocommerce_get_order_payment_tokens', 'sort_payment_tokens', 10, 2 );

function sort_payment_tokens( $tokens, $order_id ) {
    usort( $tokens, function( $a, $b ) {
        return strcmp( $a->get_gateway_id(), $b->get_gateway_id() );
    });
    return $tokens;
}

引用元: https://docs.woocommerce.com

サンプルコード 4: 特定のユーザーに対するトークンの提供

このサンプルコードは、特定のユーザーが利用できるトークンをフィルタリングします。

add_filter( 'woocommerce_get_order_payment_tokens', 'restrict_payment_tokens_for_user', 10, 2 );

function restrict_payment_tokens_for_user( $tokens, $order_id ) {
    if ( current_user_can( 'special_user' ) ) {
        $tokens = []; // 特定のユーザーの場合はトークンをリセット
    }
    return $tokens;
}

引用元: https://wpbeginner.com

サンプルコード 5: トークンのセキュリティ強化

このサンプルコードは、セキュリティ上の理由から不正なトークンを削除します。

add_filter( 'woocommerce_get_order_payment_tokens', 'secure_payment_tokens', 10, 2 );

function secure_payment_tokens( $tokens, $order_id ) {
    foreach ( $tokens as $key => $token ) {
        if ( ! in_array( $token->get_id(), get_valid_token_ids() ) ) {
            unset( $tokens[$key] ); // 無効なトークンを削除
        }
    }
    return $tokens;
}

引用元: https://squaredot.com

以上が woocommerce_get_order_payment_tokens フィルタの説明とサンプルコードです。これを利用して、WooCommerce内で支払いトークンを効果的に管理することができます。

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


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