概要
woocommerce_after_checkout_shipping_form
アクションは、WooCommerce のチェックアウトプロセスの一部として、配送情報のフォームが表示された後にカスタムコードを実行するために使用されます。このフックを使うことで、以下のような機能を実装することができます。
- 追加の説明文や通知メッセージの表示
- カスタムフィールドの追加
- 配送オプションに基づいた条件付きロジックの実装
- ユーザーが入力する情報のバリデーション
- サードパーティ製サービスとの統合
- ユーザーの過去の注文情報の表示
構文
add_action('woocommerce_after_checkout_shipping_form', 'your_function_name');
パラメータ
- なし
戻り値
- なし
バージョン
- WooCommerce: 2.0.0 以降
- WordPress: 4.0 以降
サンプルコード
サンプル1: カスタムメッセージの表示
このサンプルコードは、配送情報のフォームの直後にカスタムメッセージを表示します。
add_action('woocommerce_after_checkout_shipping_form', 'custom_checkout_message');
function custom_checkout_message() {
echo '<p class="custom-message">ご注意: 配送先情報を正確に入力してください。</p>';
}
引用元: https://wordpress.org
サンプル2: カスタムフィールドの追加
このコードは、配送情報のフォームにカスタムフィールドを追加します。
add_action('woocommerce_after_checkout_shipping_form', 'add_custom_checkout_field');
function add_custom_checkout_field() {
echo '<div class="custom-field">
<label for="custom_info">特別なリクエスト:</label>
<input type="text" name="custom_info" id="custom_info" placeholder="リクエストを入力してください"/>
</div>';
}
引用元: https://wordpress.org
サンプル3: 配送オプションにおける条件付きロジック
このコードでは、特定の配送方法が選択された場合にのみメッセージを表示します。
add_action('woocommerce_after_checkout_shipping_form', 'conditional_shipping_message');
function conditional_shipping_message() {
if ( isset($_POST['shipping_method']) && $_POST['shipping_method'][0] == 'flat_rate:1' ) {
echo '<p class="conditional-message">この配送方法は急速配送です。</p>';
}
}
引用元: https://wordpress.org
サンプル4: バリデーションの追加
このサンプルでは、カスタムフィールドに対するバリデーションを追加しています。
add_action('woocommerce_after_checkout_shipping_form', 'validate_custom_field');
function validate_custom_field() {
if ( isset($_POST['custom_info']) && empty($_POST['custom_info']) ) {
wc_add_notice(__('特別なリクエストは必須です。', 'woocommerce'), 'error');
}
}
引用元: https://wordpress.org
サンプル5: 過去の注文情報の表示
このコードは、ユーザーの過去の注文情報を表示します。
add_action('woocommerce_after_checkout_shipping_form', 'display_past_order_info');
function display_past_order_info() {
$past_orders = wc_get_orders(array('customer' => get_current_user_id()));
if ( !empty( $past_orders ) ) {
echo '<h3>過去の注文:</h3><ul>';
foreach ( $past_orders as $order ) {
echo '<li>注文ID: ' . $order->get_id() . '</li>';
}
echo '</ul>';
}
}
引用元: https://wordpress.org
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |