REST API cho người mới: tạo route riêng, trả JSON chuẩn

WordPress đã tích hợp sẵn REST API từ phiên bản 4.7, nhưng phần lớn người dùng mới chỉ biết đến /wp-json/wp/v2/posts – tức là các route mặc định. Bài viết này hướng dẫn cách tạo một route riêng hoàn toàn, trả về JSON chuẩn, dễ mở rộng và có thể dùng trong plugin hoặc theme của bạn.

REST API cho người mới: tạo route riêng, trả JSON chuẩn

1. REST API là gì trong WordPress?

REST API là cách để gửi – nhận dữ liệu giữa client và server mà không cần reload trang. Trong WordPress, REST API giúp lấy dữ liệu bài viết, gửi form, thực hiện action… thông qua các endpoint dạng /wp-json/....

Thay vì chỉ gọi data có sẵn, bạn hoàn toàn có thể tạo route riêng để xử lý logic của chính mình.

2. Tạo route REST API cơ bản

Đặt đoạn code sau vào file functions.php hoặc plugin riêng:

add_action('rest_api_init', function () {
    register_rest_route('demo/v1', '/hello', [
        'methods'  => 'GET',
        'callback' => 'demo_api_hello',
    ]);
});

function demo_api_hello($request) {
    return [
        'status'  => 'success',
        'message' => 'Xin chào từ REST API!',
    ];
}

Truy cập thử: /wp-json/demo/v1/hello
Kết quả sẽ là một đoạn JSON như sau:

{
  "status": "success",
  "message": "Xin chào từ REST API!"
}

3. Gửi tham số và xử lý logic

Bạn có thể lấy tham số từ URL bằng $request->get_param('ten'). Ví dụ:

add_action('rest_api_init', function () {
    register_rest_route('demo/v1', '/greet', [
        'methods'  => 'GET',
        'callback' => 'demo_api_greet',
    ]);
});

function demo_api_greet($request) {
    $name = sanitize_text_field($request->get_param('ten'));
    if (!$name) {
        return new WP_Error('no_name', 'Thiếu tham số ten', ['status' => 400]);
    }

    return [
        'status'  => 'success',
        'message' => 'Chào ' . $name,
    ];
}

Gọi thử: /wp-json/demo/v1/greet?ten=Tuấn → Kết quả:

{
  "status": "success",
  "message": "Chào Tuấn"
}

4. Trả dữ liệu dạng danh sách

Ví dụ: bạn muốn trả danh sách 5 bài viết gần đây, chỉ gồm ID, tiêu đề và link:

function demo_api_latest_posts($request) {
    $posts = get_posts([
        'numberposts' => 5,
        'post_type'   => 'post',
    ]);

    $data = array_map(function($post) {
        return [
            'id'    => $post->ID,
            'title' => get_the_title($post),
            'link'  => get_permalink($post),
        ];
    }, $posts);

    return [
        'status' => 'success',
        'data'   => $data,
    ];
}

add_action('rest_api_init', function () {
    register_rest_route('demo/v1', '/latest', [
        'methods'  => 'GET',
        'callback' => 'demo_api_latest_posts',
    ]);
});

5. Lưu ý khi viết REST API

  • Trả JSON có cấu trúc rõ ràng: status, message, data nếu cần
  • Sử dụng WP_Error nếu muốn trả lỗi chuẩn
  • Luôn sanitize dữ liệu người dùng gửi lên
  • Có thể dùng 'permission_callback' để giới hạn quyền truy cập nếu cần

Kết luận

REST API là công cụ cực kỳ mạnh mẽ để biến WordPress thành một nền tảng mở, kết nối dễ dàng với JavaScript, app di động, hoặc hệ thống khác. Bắt đầu bằng những route nhỏ như /demo/v1/hello là cách nhanh và dễ hiểu nhất để tiếp cận REST API – rồi bạn có thể mở rộng đến form, filter, Ajax hoặc plugin tùy biến sau này.

Nếu bạn muốn xem plugin thực tế đã dùng REST API thế nào, hãy thử Init Live Search hoặc Init View Count – tất cả đều dùng REST API để xử lý phía client.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...