概要
after_woocommerce_add_payment_method
は、WooCommerceで新しい支払い方法が追加された後に実行されるフックです。これにより、支払い方法が追加された後にカスタム処理を実施することができます。このアクションは、以下のような機能を実装する際によく使われます。
- 支払い方法ごとのクーポンコードの適用
- 顧客の支払い方法の監視
- 見積もりやオファーのトリガー
- 支払い方法に関連するフィールドの検証
- メーリングリストへのサブスクリプションの管理
- カスタムフィールドの保存や更新
構文
do_action( 'after_woocommerce_add_payment_method', $customer_id, $payment_method );
パラメータ
$customer_id
(int): 新しい支払い方法を追加した顧客のID。$payment_method
(array): 追加された支払い方法のデータ。
戻り値
このアクションは何も戻さず、目的に応じた副作用を引き起こします。
使用可能なバージョン
- WooCommerce: バージョン 2.0 以上
- WordPress: バージョン 4.0 以上
サンプルコード
サンプル1: 支払い方法追加後にクーポンを適用
add_action( 'after_woocommerce_add_payment_method', 'apply_coupon_after_payment_method', 10, 2 );
function apply_coupon_after_payment_method( $customer_id, $payment_method ) {
if ( isset( $_POST['coupon_code'] ) ) {
WC()->cart->apply_coupon( sanitize_text_field( $_POST['coupon_code'] ) );
}
}
このサンプルコードは、新しい支払い方法が追加された際に、クーポンコードを適用する機能を追加しています。
サンプル2: 新しい支払い方法を管理者に通知
add_action( 'after_woocommerce_add_payment_method', 'notify_admin_new_payment_method', 10, 2 );
function notify_admin_new_payment_method( $customer_id, $payment_method ) {
$user_info = get_userdata( $customer_id );
$to = 'admin@example.com';
$subject = '新しい支払い方法が追加されました';
$message = '顧客 ' . $user_info->user_login . ' が新しい支払い方法を追加しました: ' . $payment_method['method_id'];
wp_mail( $to, $subject, $message );
}
このコードは、新しい支払い方法が追加された際に、管理者に通知を送信する役割を果たしています。
サンプル3: 支払い方法の検証
add_action( 'after_woocommerce_add_payment_method', 'validate_payment_method', 10, 2 );
function validate_payment_method( $customer_id, $payment_method ) {
if ( empty( $payment_method['account_number'] ) ) {
// エラーメッセージを表示
wc_add_notice( __( 'アカウント番号を入力してください。', 'woocommerce' ), 'error' );
}
}
このサンプルコードは、支払い方法が追加された後、必要なフィールドが正しく入力されているかを確認します。
サンプル4: 新しいフィールドの保存
add_action( 'after_woocommerce_add_payment_method', 'save_custom_field_after_payment_method', 10, 2 );
function save_custom_field_after_payment_method( $customer_id, $payment_method ) {
if ( isset( $_POST['custom_field'] ) ) {
update_user_meta( $customer_id, 'custom_field', sanitize_text_field( $_POST['custom_field'] ) );
}
}
このコードは、追加された支払い方法とともにカスタムフィールドのデータを保存する機能を実装しています。
サンプル5: 支払い方法のログ記録
add_action( 'after_woocommerce_add_payment_method', 'log_payment_method_addition', 10, 2 );
function log_payment_method_addition( $customer_id, $payment_method ) {
$log = '顧客 ID ' . $customer_id . ' が新しい支払い方法 ' . $payment_method['method_id'] . 'を追加しました。';
error_log( $log );
}
このサンプルは、新しい支払い方法が追加された際に、その情報をログファイルに記録します。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |