概要
woocommerce_get_order_payment_tokens
フィルタは、WooCommerceでの支払い方法のトークンを取得またはフィルタリングするために使用されます。このフックを使用することで、開発者は特定の条件に基づいて、顧客の支払い方法のトークンを変更したり、追加したりすることが可能です。この機能は、以下のようなシナリオでよく使われます。
- 顧客が選択した特定の支払い方法に基づいてトークンをフィルタリングする。
- 過去の支払い履歴に基づいて、おすすめの支払い方法を表示する。
- セキュリティ上の理由から特定のトークンを削除する。
- 特定のユーザーグループに対して異なるトークンを提供する。
- プラグインが追加した新しい支払い方法のトークンを統合する。
- カスタムデザインや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内で支払いトークンを効果的に管理することができます。