概要
woocommerce_checkout_update_order_review
アクションは、WooCommerceのチェックアウトプロセスにおいて、顧客が注文内容を確認・更新した際にトリガーされるフックです。このアクションは、チェックアウトページでの注文情報の変更が必要な時に多く使われます。具体的には、以下のような機能を実装する際に使用されることが一般的です:
– カスタム送料の計算
– 割引コードの適用
– ユーザーの選択に基づく商品の在庫情報の更新
– 注文合計の再計算
– 特殊なキャンペーンやオファーの表示
– 他のプラグインとの連携による情報の更新
構文
add_action('woocommerce_checkout_update_order_review', 'your_function_name', 10, 1);
パラメータ
$posted_data
: フォームから送信されたデータを含む配列。これには、住所、支払い方法、カート内容などが含まれます。
戻り値
このアクションは戻り値を持っていませんが、フックされた関数内での処理結果を元に、チェックアウトプロセスの流れが変わる場合があります。
対応プラグインとバージョン
- WooCommerce バージョン: 3.0.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_checkout_update_order_review', 'apply_discount_code');
function apply_discount_code($posted_data) {
parse_str($posted_data, $output);
if (!empty($output['discount_code'])) {
WC()->cart->apply_coupon(sanitize_text_field($output['discount_code']));
}
}
サンプルコード2: カスタム送料の追加
このコードは、特定の条件に従ってカスタム送料をチェックアウト時に追加します。
add_action('woocommerce_checkout_update_order_review', 'add_custom_shipping');
function add_custom_shipping($posted_data) {
if (isset($_POST['custom_shipping'])) {
$custom_fee = 10; // 追加する料金
WC()->cart->add_fee(__('Custom Shipping Fee', 'woocommerce'), $custom_fee);
}
}
サンプルコード3: 在庫のリアルタイムチェック
チェックアウト時に在庫状況をリアルタイムで確認し、必要に応じて適宜エラーメッセージを表示します。
add_action('woocommerce_checkout_update_order_review', 'check_stock_before_checkout');
function check_stock_before_checkout($posted_data) {
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$product_id = $cart_item['product_id'];
if (!wc_get_product($product_id)->is_in_stock()) {
wc_add_notice(__('The product is out of stock.', 'woocommerce'), 'error');
}
}
}
サンプルコード4: ユーザー選択に応じたオプションの表示
顧客がチェックアウト時に選んだオプションに基づいて、特定の情報を表示します。
add_action('woocommerce_checkout_update_order_review', 'show_custom_option');
function show_custom_option($posted_data) {
parse_str($posted_data, $output);
if (!empty($output['custom_option'])) {
echo '<div class="custom-message">Your custom option has been selected!</div>';
}
}
サンプルコード5: 注文合計の再計算
このコードは、顧客の選択に基づいて注文合計を再計算します。
add_action('woocommerce_checkout_update_order_review', 'recalculate_order_total');
function recalculate_order_total($posted_data) {
// 例: 特定の条件に応じて割引を適用
WC()->cart->calculate_totals();
}
これらのサンプルコードは、woocommerce_checkout_update_order_review
アクションを活用して、さまざまなカスタマイズや拡張をするための基本的な実装例です。