Quay lại danh sách bài viết
WordPress

Tích hợp kết quả xổ số vào website WordPress bằng PHP & cURL (Không dùng Plugin)

Đội ngũ kỹ thuật XoSoAPI
20 Tháng 6, 2026
10 phút đọc

Hướng dẫn nhanh: Để tích hợp kết quả xổ số vào WordPress bằng PHP không dùng plugin, bạn hãy sử dụng hàm wp_remote_get() để gửi request HTTP GET đến endpoint của XoSoAPI.online (ví dụ: https://xosoapi.online/api/v1/vietnam/draws?region=MB), giải mã dữ liệu JSON trả về và đăng ký thành một custom shortcode trong file functions.php của theme.

Mặc dù XoSoAPI cung cấp sẵn một Plugin WordPress Lottery chất lượng cao và giao diện tùy biến dễ dàng, tuy nhiên nhiều quản trị viên web và lập trình viên vẫn muốn tích hợp trực tiếp dữ liệu kết quả thông qua mã nguồn PHP. Điều này giúp họ có thể can thiệp sâu vào cấu trúc HTML, tùy chỉnh CSS độc quyền hoặc tối ưu hóa truy vấn cache theo sở thích.

Trong bài viết này, chúng tôi sẽ hướng dẫn các bạn viết một hàm PHP chuẩn hóa để kết nối API của XoSoAPI và đăng ký nó thành một **Shortcode** tùy chỉnh. Bạn chỉ việc dán shortcode này vào bất kỳ bài viết hoặc trang tĩnh nào để hiển thị bảng kết quả.

Tại sao nên sử dụng wp_remote_get thay vì cURL thuần?

Trong môi trường WordPress, việc sử dụng các hàm HTTP API tiêu chuẩn của lõi (core) như wp_remote_get() là giải pháp tối ưu nhất.

  • Độ tương thích cao: Tự động phát hiện cấu hình cURL của server hoặc fallback về streams/sockets nếu server chặn cURL.
  • An toàn: Tích hợp sẵn cơ chế bảo mật và lọc dữ liệu đầu vào.
  • Dễ dàng Cache: Dễ dàng kết hợp với Transient API của WordPress để lưu cache kết quả (tránh gọi API liên tục gây tốn giới hạn gói cước của bạn).

Đoạn Code Tích Hợp Chi Tiết

Hãy sao chép đoạn code PHP dưới đây và dán vào cuối file functions.php của theme (hoặc child theme) bạn đang sử dụng:

functions.php
<?php
// Thêm đoạn code này vào file functions.php của Theme bạn đang dùng

function get_xoso_results_shortcode($atts) {
    // Cấu hình các tham số shortcode
    $a = shortcode_atts(array(
        'region' => 'MB', // MB, MN, MT hoặc Vietlott
    ), $atts);

    $api_key = 'YOUR_API_KEY'; // Thay thế bằng API Key của bạn
    $url = 'https://xosoapi.online/api/v1/vietnam/draws?region=' . urlencode($a['region']) . '&limit=1';

    // Sử dụng hàm wp_remote_get của WordPress để gọi API
    $response = wp_remote_get($url, array(
        'headers' => array(
            'X-API-Key' => $api_key,
            'Content-Type' => 'application/json'
        ),
        'timeout' => 15
    ));

    if (is_wp_error($response)) {
        return 'Không thể kết nối đến máy chủ xổ số.';
    }

    $body = wp_remote_retrieve_body($response);
    $result_data = json_decode($body, true);

    if (empty($result_data['success']) || empty($result_data['data'])) {
        return 'Không tìm thấy dữ liệu kết quả xổ số.';
    }

    // Đọc đợt quay số mới nhất từ mảng data
    $draw = $result_data['data'][0];
    $province_name = $draw['province']['name'];
    $formatted_date = $draw['formatted_date'];
    $prizes = $draw['prizes']; // Object chứa: db, g1, g2, g3...

    // Bắt đầu render bảng kết quả HTML
    ob_start();
    ?>
    <div class="xoso-box" style="border: 1px solid #ddd; border-radius: 12px; padding: 20px; max-width: 400px; font-family: sans-serif; background: #fff; color: #333;">
        <h3 style="text-align: center; margin-top: 0; color: #d32f2f;">KẾT QUẢ XỔ SỐ <?php echo esc_html(strtoupper($province_name)); ?></h3>
        <p style="text-align: center; font-size: 13px; color: #666; margin-bottom: 20px;">Ngày quay: <?php echo esc_html($formatted_date); ?></p>
        
        <table style="width: 100%; border-collapse: collapse; text-align: center;">
            <tr style="border-bottom: 1px solid #eee;">
                <td style="padding: 10px; font-weight: bold; width: 30%; color: #d32f2f;">Đặc Biệt</td>
                <td style="padding: 10px; font-size: 18px; font-weight: bold; color: #d32f2f;"><?php echo esc_html(implode(' - ', $prizes['db'] ?? [])); ?></td>
            </tr>
            <tr style="border-bottom: 1px solid #eee;">
                <td style="padding: 10px; font-weight: bold;">Giải Nhất</td>
                <td style="padding: 10px;"><?php echo esc_html(implode(' - ', $prizes['g1'] ?? [])); ?></td>
            </tr>
            <tr style="border-bottom: 1px solid #eee;">
                <td style="padding: 10px; font-weight: bold;">Giải Nhì</td>
                <td style="padding: 10px;"><?php echo esc_html(implode(' - ', $prizes['g2'] ?? [])); ?></td>
            </tr>
            <tr style="border-bottom: 1px solid #eee;">
                <td style="padding: 10px; font-weight: bold;">Giải Ba</td>
                <td style="padding: 10px;"><?php echo esc_html(implode(' - ', $prizes['g3'] ?? [])); ?></td>
            </tr>
        </table>
        <p style="text-align: center; font-size: 11px; color: #999; margin-top: 15px; margin-bottom: 0;">Powered by XoSoAPI.online</p>
    </div>
    <?php
    return ob_get_clean();
}

// Đăng ký Shortcode trong WordPress
add_shortcode('xoso_custom', 'get_xoso_results_shortcode');
?>

Lưu ý bảo mật: Nhớ thay thế giá trị 'YOUR_API_KEY' bằng API Key thật của bạn lấy từ tài khoản Dashboard.

Cách sử dụng Shortcode ngoài giao diện

Sau khi đã lưu file `functions.php`, bạn có thể chèn bảng kết quả xổ số ra ngoài giao diện bằng cách chèn đoạn mã shortcode sau vào khu soạn thảo bài viết (Gutenberg/Classic Editor hoặc Elementor):

[xoso_custom region="MB"]

Nếu muốn hiển thị kết quả xổ số Miền Nam, bạn chỉ cần thay đổi tham số:

[xoso_custom region="MN"]

Cách tối ưu thêm (Khuyên dùng)

Để tránh việc website WordPress của bạn phải gửi request tới máy chủ XoSoAPI mỗi khi có người đọc truy cập trang (gây chậm website và tốn dung lượng API cước), bạn nên sử dụng **Transient API** của WordPress để cache dữ liệu kết quả xổ số trong vòng 10-15 phút. Điều này giúp tối ưu tốc độ load trang cực kỳ đáng kể.

Tùy Biến Tối Đa Với API Chuẩn JSON

Đăng ký tài khoản miễn phí ngay hôm nay để lấy API Key chạy thử nghiệm code PHP WordPress.

Chat Telegram
Tích hợp Kết quả Xổ số vào WordPress bằng PHP (Không dùng Plugin) | XoSoAPI