WordPress REST API là gì?

WordPress REST API cung cấp API Endpoint cho phép các lập trình viên tương tác với các trang web từ xa bằng cách gửi và nhận các đối tượng JSON (Ký hiệu đối tượng JavaScript). JSON là một định dạng dữ liệu tiêu chuẩn mở, nhẹ và dễ đọc. Khi bạn gửi nội dung đến hoặc đưa ra yêu cầu tới API, phản hồi sẽ được trả về ở định dạng JSON. Điều này cho phép các lập trình viên tạo, đọc và cập nhật nội dung WordPress từ xa hoặc từ các ứng dụng bên ngoài.

Các khái niệm của WordPress REST API

Để bắt đầu, bạn cần hiểu các khái niệm sau:

  • Routes/Endpoints: Có thể hiểu đây là đường dẫn nới bạn gửi request tới trên blog của bạn. Nó có đường dẫn là: http://your-blog.com/wp-json/
  • Requests: Yêu cầu gửi tới Endpoint
  • Responses: Dữ liệu trả về của Endpoin
  • Schema: Cấu trúc dữ liệu mà Responses trả về để bạn có thể xác định được dữ liệu cần tìm
  • Controller Classes: Trình điều khiển, nơi quản lý, điều hướng Endpoint, Request, Responses

Hướng dẫn sử dụng WordPress REST API

Bây giờ chúng ta sẽ cùng tìm hiểu cách quản lý WordPress thông qua WordPress REST API

Đường dẫn base là:

http://your-blog.com/wp-json
wp-json đã bị vô hiệu hóa

Liệt kê danh sách bài viết (posts)

curl -X OPTIONS -i http://your-blog.com/wp-json/wp/v2/posts

Liệt kê danh sách trang (pages)

curl -X GET -i http://your-blog.com/wp-json/wp/v2/pages

Lấy bài viết theo ID

curl -X GET -i http://your-blog.com/wp-json/wp/v2/posts/<ID>

Tạo mới một bài viết

Để tạo 1 bài viết mới trong WordPress, thông thường bạn phải login vào trang quản trị và viết bài. Tuy nhiên với Rest API bạn không thể login bằng phương pháp thông thường. Vì vậy bạn cần 1 plugin để thực hiện điều đó mới có thể tạo bài viết thông qua REST API. Đó là Basic Auth

Sau khi cài đặt xong chúng ta có thể tạo bài viết với xác thực đơn giản:

curl --user username:password http://your-blog.com/wp-json/

Hoặc tạo bài viết với phần header:

Authorization: Basic dGVzdHVzZXI6MTIzNDU2

Với: dGVzdHVzZXI6MTIzNDU2 là mã base64 của username:password

Update bài viết

curl -X POST --user username:password http://your-blog.com/wp-json/wp/v2/posts/<ID> -d '{"title":"My New Title"}'

Xóa bài viết

curl -X DELETE https://your-blog.com/wp-json/wp/v2/posts/<id>

Vô hiệu hóa WordPress REST API (wp-json) để tăng bảo mật cho WordPress

Vì vậy, nếu không sử dụng WordPress REST API, bạn nên vô hiệu hóa nó đi. Có 2 cách để thực hiện việc này:

1. Vô hiệu hóa sử dụng plugin

Một số plugin mà bạn có thể tham khảo:

2. Vô hiệu hóa sử dụng code

Rất đơn giản là sử dụng đoạn code dưới đây đặt vào file functions.php của theme mà bạn đang sử dụng:

add_filter( 'rest_authentication_errors', function( $result ) {
	if ( ! empty( $result ) ) {
		return $result;
	}
	if ( ! is_user_logged_in() ) {
		return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
	}
	return $result;
});