概要
woocommerce_pay_order_after_submit
アクションは、WooCommerce のチェックアウトプロセスにおいて、注文の支払いが完了する前に、特定の処理を追加したいときに利用されるフックです。このアクションは、支払いボタンが押された直後に実行されるため、支払い処理に影響を与える必要がある際に役立ちます。具体的な機能としては以下のようなケースで使用されることがあります。
- カスタムバリデーションの実装
- トラッキングコードの挿入
- 特定の条件に応じたフィードバックメッセージの表示
- カスタムAPIとの連携
- 商品の在庫状況をチェック
- リダイレクト処理の実施
構文
add_action( 'woocommerce_pay_order_after_submit', 'custom_function_name', 10, 2 );
パラメータ
order
(WC_Order): 現在の注文オブジェクト。payment_method
(string): 使用された支払い方法のスラッグ。
戻り値
このアクションは何も返さず、プロセスに影響を与えたり、追加の操作を実行するために使用されます。
使用可能なプラグインおよびバージョン
- WooCommerceバージョン: 4.0以降
- WordPressバージョン: 5.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_action( 'woocommerce_pay_order_after_submit', 'custom_validation_function', 10, 2 );
function custom_validation_function( $order, $payment_method ) {
if ( $order->get_total() > 500 ) {
echo '<div class="warning">高額のため、確認が必要です。</div>';
}
}
このコードは、注文の総額が500を超える場合に警告メッセージを表示します。
サンプルコード 2: トラッキングコードの挿入
add_action( 'woocommerce_pay_order_after_submit', 'insert_tracking_code', 10 );
function insert_tracking_code() {
?>
<script>console.log('注文が送信されました');</script>
<?php
}
このコードは、注文が送信されたことをコンソールにログ表示します。
サンプルコード 3: 特定の条件に応じたフィードバックメッセージの表示
add_action( 'woocommerce_pay_order_after_submit', 'conditional_feedback_message', 10 );
function conditional_feedback_message( $order, $payment_method ) {
if ( isset( $_POST['some_custom_field'] ) ) {
echo '<div class="success">お支払いありがとうございます。</div>';
}
}
このコードは、特定のカスタムフィールドが存在する場合に成功メッセージを表示します。
サンプルコード 4: カスタムAPIとの連携
add_action( 'woocommerce_pay_order_after_submit', 'connect_custom_api', 10, 2 );
function connect_custom_api( $order, $payment_method ) {
$response = wp_remote_post( 'https://example.com/api', [
'body' => json_encode( [ 'order_id' => $order->get_id() ] ),
'headers' => [ 'Content-Type' => 'application/json' ],
]);
}
このコードは、指定したAPIに注文IDを送信します。
サンプルコード 5: 商品の在庫状況をチェック
add_action( 'woocommerce_pay_order_after_submit', 'check_stock_before_payment', 10, 2 );
function check_stock_before_payment( $order, $payment_method ) {
foreach ( $order->get_items() as $item ) {
$product = $item->get_product();
if ( ! $product->is_in_stock() ) {
echo '<div class="error">商品が在庫切れのため、支払いができません。</div>';
return;
}
}
}
このコードは、商品の在庫状況を確認し、在庫がない場合はエラーメッセージを表示します。