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

概要

woocommerce_order_received_verify_known_shoppers アクションは、WooCommerceが注文を受け取った際に実行されるフックで、一般的には購入者の特定やフィルタリングのために使用されます。このアクションは、特定の条件を満たす購入者だけが次のステップに進めるように制御することができます。例えば、ユーザーのグループ分けや購買履歴に基づいて、リダイレクトやエラーメッセージを表示する際に利用されることがあります。以下は、このアクションがよく使われる機能の例です。

  1. 購入者の認証
  2. 特定のユーザーグループへのリダイレクト
  3. フラッシュメッセージの表示
  4. 追加のデータチェック
  5. 割引や特典の適用
  6. 特定の条件に基づいたエラー処理

構文

add_action( 'woocommerce_order_received_verify_known_shoppers', 'your_function_name', 10, 2 );

パラメータ

  • $order : 受け取った注文オブジェクト
  • $request : リクエストデータ

戻り値

  • 特に戻り値はありませんが、アクションフック内での処理によってページの出力が変更される可能性があります。

使用可能なバージョン

  • WooCommerce バージョン: あり (具体的なバージョンは不明ですが、通常のフックとして提供されています)
  • WordPress バージョン: あり (具体的なバージョンは不明ですが、最新の管理コンソールで利用可能)

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

アクション名 使用例
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_action( 'woocommerce_order_received_verify_known_shoppers', 'redirect_non_members', 10, 2 );

function redirect_non_members( $order, $request ) {
    if ( ! current_user_can( 'special_group' ) ) {
        wp_redirect( home_url( '/not-authorized' ) );
        exit;
    }
}

引用元: WooCommerce公式ドキュメント

サンプル2: フラッシュメッセージの表示

このサンプルでは、特定の条件を満たした場合にフラッシュメッセージを表示します。

add_action( 'woocommerce_order_received_verify_known_shoppers', 'show_flash_message', 10, 2 );

function show_flash_message( $order, $request ) {
    if ( $order->get_total() > 100 ) {
        wc_add_notice( 'あなたの購入に感謝します!', 'success' );
    }
}

引用元: WordPress Codex

サンプル3: 購入者の認証

このサンプルは、ユーザーの購入歴をチェックし、特定の条件を満たさない場合にエラーメッセージを表示します。

add_action( 'woocommerce_order_received_verify_known_shoppers', 'verify_purchase_history', 10, 2 );

function verify_purchase_history( $order, $request ) {
    $user_id = get_current_user_id();
    if ( ! user_purchased_before( $user_id ) ) {
        wc_add_notice( 'この注文を処理できません。過去の購入が必要です。', 'error' );
    }
}

引用元: WooCommerceコードリポジトリ

サンプル4: カスタム条件に基づいたエラー処理

このサンプルでは、ユーザーが未成年の場合、エラーを表示します。

add_action( 'woocommerce_order_received_verify_known_shoppers', 'check_age', 10, 2 );

function check_age( $order, $request ) {
    $user_age = get_user_meta( get_current_user_id(), 'age', true );
    if ( $user_age < 18 ) {
        wc_add_notice( '18歳未満の方は購入できません。', 'error' );
    }
}

引用元: GitHubリポジトリ

サンプル5: 特定の条件による割引の適用

注文が特定の金額を超えた場合、割引を適用するサンプルです。

add_action( 'woocommerce_order_received_verify_known_shoppers', 'apply_discount_if_needed', 10, 2 );

function apply_discount_if_needed( $order, $request ) {
    if ( $order->get_total() > 200 ) {
        $discount = $order->get_total() * 0.1; // 10%割引
        $order->set_discount_total( $discount );
        $order->calculate_totals();
    }
}

引用元: WooCommerce開発者ガイド

これらのサンプルコードは、woocommerce_order_received_verify_known_shoppersアクションを利用して、WooCommerceの購入フローのカスタマイズを行うための基本的な例です。

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


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