概要
woocommerce_proceed_to_checkout
アクションは、WooCommerceにおける「チェックアウトに進む」ボタンがクリックされた際に発生するフックです。このアクションを使用することで、チェックアウトプロセスの初期段階でのカスタマイズや追加処理を行うことができます。一般的には以下のような機能実装に使われます。
- チェックアウト画面にカスタムフィールドを追加する
- ユーザーが進む前に商品在庫の確認を行う
- チェックアウト手続きをトリガーにしたイベントロギング
- 特定の条件に基づいた割引やプロモーションの適用
- フォームのバリデーションを追加する
- サードパーティサービスへのデータ送信
このアクションの構文は以下の通りです。
add_action('woocommerce_proceed_to_checkout', 'your_function_here');
構文
add_action( 'woocommerce_proceed_to_checkout', 'your_function_here', 10, 0 );
パラメータ
このアクションはパラメータを持たず、関数は引数がありません。
戻り値
戻り値も特になく、関数をフックさせる目的のためだけに使用されます。
互換性
- 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_action('woocommerce_proceed_to_checkout', 'custom_function_proceed_to_checkout');
function custom_function_proceed_to_checkout() {
// チェックアウト前の処理:お礼のメッセージを表示
echo '<div class="custom-message">ご購入ありがとうございます!チェックアウトに進みます。</div>';
}
このサンプルコードは、チェックアウトに進む際にユーザーにお礼のメッセージを表示します。
サンプルコード 2
add_action('woocommerce_proceed_to_checkout', 'validate_cart_items_before_checkout');
function validate_cart_items_before_checkout() {
// カートアイテムの在庫確認を行う
foreach (WC()->cart->get_cart() as $cart_item) {
if (apply_filters('woocommerce_stock_amount_check', $cart_item['quantity'] > get_post_meta($cart_item['product_id'], '_stock', true))) {
// 在庫なしの際はエラーメッセージを表示
wc_add_notice(__('カート内の一部商品が在庫切れです。'), 'error');
return;
}
}
}
このサンプルコードは、カート内の商品が在庫切れの場合、エラーメッセージを表示します。
サンプルコード 3
add_action('woocommerce_proceed_to_checkout', 'log_checkout_event');
function log_checkout_event() {
// チェックアウトの際にイベントログを記録
error_log('ユーザーがチェックアウトを進めました。');
}
このサンプルコードは、ユーザーがチェックアウトを進めた際に、エラーログにメッセージを追加します。
サンプルコード 4
add_action('woocommerce_proceed_to_checkout', 'apply_special_discount');
function apply_special_discount() {
// 特定の条件下で割引を適用
if (is_user_logged_in()) {
// ログインしたユーザーに特別割引を適用
WC()->cart->add_fee('特別割引', -10);
}
}
このサンプルコードは、ログインしているユーザーに対して特別割引を自動適用します。
サンプルコード 5
add_action('woocommerce_proceed_to_checkout', 'custom_checkout_validation');
function custom_checkout_validation() {
// チェックアウトのバリデーションを追加
if (empty($_POST['custom_field'])) {
wc_add_notice(__('カスタムフィールドを入力してください。'), 'error');
}
}
このサンプルコードは、チェックアウト時にカスタムフィールドが空であればエラーメッセージを表示します。