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