概要
woocommerce_checkout_process
アクションは、WooCommerceのチェックアウトプロセス中にフックを使用してカスタム処理を追加できるポイントを提供します。このアクションは、顧客がチェックアウトを完了しようとする際に実行され、さまざまな機能を実装するのに役立ちます。具体的には、以下のようなシナリオでよく使われます。
- 入力チェックおよびバリデーションの強化
- カスタムフィールドの処理
- 特定の条件に基づくエラーメッセージの表示
- フォームデータの加工や変換
- サードパーティのAPIへのデータ送信
- トランザクションデータのログ記録
構文
add_action( 'woocommerce_checkout_process', 'your_custom_function' );
パラメータ
- このアクションはパラメータを受け取らないため、カスタム関数内で直接処理を行います。
戻り値
- 特になし。フックに登録した関数内で処理が実行されます。
使用可能なバージョン
- WooCommerce: 3.0以上
- WordPress: 4.0以上
サンプルコード
サンプル1: 入力フィールドチェック
このサンプルコードは、配送先住所の郵便番号が必須であることを確認します。
add_action( 'woocommerce_checkout_process', 'custom_postcode_validation' );
function custom_postcode_validation() {
if ( empty( $_POST['billing_postcode'] ) ) {
wc_add_notice( __( 'Please enter a postcode.' ), 'error' );
}
}
サンプル2: カスタムフィールドの処理
このサンプルコードは、カスタムチェックボックスが選択されていない場合にエラーメッセージを追加します。
add_action( 'woocommerce_checkout_process', 'custom_checkbox_validation' );
function custom_checkbox_validation() {
if ( ! isset( $_POST['custom_checkbox'] ) ) {
wc_add_notice( __( 'You must agree to the terms and conditions.' ), 'error' );
}
}
サンプル3: 特定条件でのエラーメッセージ表示
このサンプルコードは、特定の商品の在庫がない場合にエラーメッセージを表示します。
add_action( 'woocommerce_checkout_process', 'check_stock_availability' );
function check_stock_availability() {
$product_id = 123; // 対象の製品ID
if ( ! $product_id || ! WC_Product_Factory::get_product( $product_id )->is_in_stock() ) {
wc_add_notice( __( 'Sorry, this product is currently out of stock.' ), 'error' );
}
}
サンプル4: 外部APIにデータを送信
このサンプルコードは、チェックアウトプロセス中に外部APIにデータを送信します。
add_action( 'woocommerce_checkout_process', 'send_data_to_external_api' );
function send_data_to_external_api() {
$data = array(
'billing_email' => $_POST['billing_email'],
'billing_first_name' => $_POST['billing_first_name'],
);
// 外部APIへのデータ送信処理
wp_remote_post( 'https://example.com/api', array(
'body' => $data,
));
}
サンプル5: トランザクションデータのログ記録
このサンプルコードは、チェックアウト情報をログに記録します。
add_action( 'woocommerce_checkout_process', 'log_checkout_data' );
function log_checkout_data() {
error_log( print_r( $_POST, true ) ); // チェックアウトデータをログに記録
}
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |