우커머스 체크아웃 페이지에 환불정책 동의 체크박스 추가하기

우커머스로 운영하는 온라인 쇼핑몰에서 고객이 주문할 때 환불정책에 대한 동의를 받아야 하는 경우가 있습니다. 기본적으로 우커머스는 이용약관 동의 체크박스만 제공하기 때문에, 환불정책 동의를 위한 별도의 체크박스를 추가해야 합니다.

구현 방법

functions.php 파일에 코드 추가

<?php
// functions.php 파일에 추가하는 코드

// 1. 체크아웃 페이지에 환불정책 체크박스 추가
add_action('woocommerce_checkout_after_terms_and_conditions', 'add_refund_policy_checkbox');
function add_refund_policy_checkbox() {
    woocommerce_form_field('refund_policy_checkbox', array(
        'type'          => 'checkbox',
        'class'         => array('form-row-wide'),
        'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
        'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
        'required'      => true,
        'label'         => '환불정책에 동의합니다 - <a href="/refund-policy/" target="_blank" rel="noopener" style="color: #151D7D; text-decoration: none;">환불정책 보기</a>',
    ), WC()->checkout->get_value('refund_policy_checkbox'));
}

// 2. 체크박스 검증
add_action('woocommerce_checkout_process', 'validate_refund_policy_checkbox');
function validate_refund_policy_checkbox() {
    if (!(int) isset($_POST['refund_policy_checkbox'])) {
        wc_add_notice(__('환불정책에 동의해야 주문을 완료할 수 있습니다.'), 'error');
    }
}

// 3. 주문 정보에 저장
add_action('woocommerce_checkout_update_order_meta', 'save_refund_policy_checkbox');
function save_refund_policy_checkbox($order_id) {
    if ($_POST['refund_policy_checkbox']) {
        update_post_meta($order_id, '_refund_policy_agreed', 'yes');
    }
}

// 4. CSS 스타일
add_action('wp_head', 'refund_policy_styles');
function refund_policy_styles() {
    if (is_checkout()) {
        ?>
        <style>
        .woocommerce #refund_policy_checkbox_field {
            margin-top: 1em;
        }
        .woocommerce #refund_policy_checkbox_field a {
            color: #151D7D !important;
            text-decoration: none !important;
        }
        .woocommerce #refund_policy_checkbox_field a:hover {
            color: #0f1459 !important;
        }
        </style>
        <?php
    }
}
?>
공유하기

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다