Tùy Chỉnh Checkout EDD: Thêm Trường Số Điện Thoại, Kiểm Tra, Lưu Trữ và Hiển Thị

// Hiển thị trường số điện thoại trên trang thanh toán
function sumobi_edd_display_checkout_fields() {
    ?>
    <p id="edd-phone-wrap">
        <label class="edd-label" for="edd-phone">
            <?php esc_html_e('Phone number', 'easy-digital-downloads'); ?>
            <?php if (edd_field_is_required('edd_phone')) : ?>
                <span class="edd-required-indicator">*</span>
            <?php endif; ?>
        </label>
        <span class="edd-description" id="edd-phone-description">
            <?php esc_html_e('Enter your phone number so we can get in touch with you.', 'easy-digital-downloads'); ?>
        </span>
        <input class="edd_phone edd-input<?php if (edd_field_is_required('edd_phone')) { echo ' required'; } ?>" 
               type="text" name="edd_phone" id="edd-phone" 
               placeholder="<?php esc_attr_e('Phone number', 'easy-digital-downloads'); ?>">
    </p>
    <?php
}
add_action('edd_purchase_form_user_info_fields', 'sumobi_edd_display_checkout_fields');

/**
 * Xác thực trường số điện thoại
 */
function sumobi_edd_validate_checkout_fields($valid_data, $data) {
    if (empty($data['edd_phone'])) {
        edd_set_error('invalid_phone', 'Please enter your phone number.');
    }
}
add_action('edd_checkout_error_checks', 'sumobi_edd_validate_checkout_fields', 10, 2);

/**
 * Lưu dữ liệu trường tùy chỉnh vào meta đơn hàng EDD
 */
function sumobi_edd_store_custom_fields($order_id, $order_data) {
    if (did_action('edd_pre_process_purchase')) {
        $phone = isset($_POST['edd_phone']) ? sanitize_text_field($_POST['edd_phone']) : '';
        edd_add_order_meta($order_id, 'phone', $phone);
    }
}
add_action('edd_built_order', 'sumobi_edd_store_custom_fields', 10, 2);

/**
 * Hiển thị số điện thoại trên trang "Xem Chi Tiết Đơn Hàng"
 */
function sumobi_edd_view_order_details($order_id) {
    $phone = edd_get_order_meta($order_id, 'phone', true);
    ?>
    <div class="column-container">
        <div class="column">
            <strong>Phone: </strong>
            <?php echo esc_html($phone); ?>
        </div>
    </div>
    <?php
}
add_action('edd_payment_view_details', 'sumobi_edd_view_order_details', 10, 1);

/**
 * Thêm thẻ {phone} vào email hóa đơn và thông báo quản trị
 */
function sumobi_edd_add_email_tag() {
    edd_add_email_tag('phone', 'Customer\'s phone number', 'sumobi_edd_email_tag_phone');
}
add_action('edd_add_email_tags', 'sumobi_edd_add_email_tag');

/**
 * Thẻ email {phone}
 */
function sumobi_edd_email_tag_phone($payment_id) {
    $phone = edd_get_order_meta($payment_id, 'phone', true);
    return $phone ? $phone : 'N/A';
}