WordPress REST API: Cách truy cập và Sử dụng

WordPress REST API cung cấp giao diện cho các ứng dụng tương tác với trang web WordPress của bạn bằng cách gửi và nhận dữ liệu dưới dạng đối tượng JSON (JavaScript Object Notation). Các ứng dụng này có thể là plugin WordPress, chủ đề hoặc ứng dụng tùy chỉnh cần truy cập dữ liệu trang web WordPress.

Một trong những triển khai nổi tiếng nhất của WP REST API là Block Editor, một ứng dụng JavaScript tương tác với dữ liệu WordPress thông qua REST API.

WordPress REST API là gì ?

Để hiểu về WordPress REST API, chúng ta cần phân tích các thành phần khác nhau của nó. Hãy bắt đầu bằng phần giới thiệu về API.

API là gì?

API – Application Programming Interface là giao diện lập trình ứng dụng cho phép các hệ thống có thể tương tác với nhau một cách dễ dàng. Nó đóng vai trò là trung gian giữa hai phần mềm, tạo điều kiện cho sự hợp tác liền mạch.

Ví dụ:  Nếu bạn muốn hiển thị một sản phẩm của Google trên trang web của mình, chẳng hạn như bản đồ, bạn sẽ cần sử dụng Google Maps API.

API là gì

API là gì?

Tính năng này cho phép trang web WordPress của bạn giao tiếp với Google Maps để có thể lấy tất cả dữ liệu và tính năng liên quan cần thiết để hiển thị các bản đồ đó.

Giống như Google, các công ty khác có API và cung cấp cho các nhà phát triển web. Những sản phẩm này có thể rất hấp dẫn vì chúng loại bỏ nhu cầu phải viết mã một tính năng (như bản đồ) từ đầu. Thay vào đó, bạn có thể sử dụng phần mềm của bên thứ ba và kết nối nó với trang web của mình thông qua API.

REST là gì?

REST – Representational State Transfer ​​là một tập hợp các hướng dẫn mà các nhà phát triển phải tuân theo khi tạo API. Do đó, REST API là một giao diện được xây dựng với các tiêu chuẩn này.

Nguyên tắc của REST API:

  • Client-Server (Máy khách – Máy chủ): Máy khách (client) và máy chủ (server) hoạt động độc lập với nhau. Máy khách gửi yêu cầu đến máy chủ và máy chủ phản hồi lại yêu cầu đó.
  • Stateless (Không trạng thái): API REST không thể lưu trữ bất kỳ thông tin nào về trang web mà chúng được kết nối trên máy chủ và chỉ nên cung cấp thông tin cần thiết để xử lý yêu cầu.
  • Cacheable (Có thể lưu cache): Phản hồi từ máy chủ có thể được lưu trữ (cache) bởi máy khách hoặc các trung gian khác để cải thiện hiệu suất.
  • Uniform Interface (Giao diện thống nhất): Các yêu cầu về tài nguyên phải được xử lý theo cùng một cách, bất kể nguồn gốc của chúng.
  • Layered System (Hệ thống phân lớp): Kiến trúc có thể được tổ chức thành nhiều lớp, mỗi lớp có chức năng riêng biệt. Máy khách không cần biết về các lớp trung gian.
  • Code on Demand (Mã theo yêu cầu – tùy chọn): Máy chủ có thể gửi mã thực thi (ví dụ: JavaScript) đến máy khách để mở rộng chức năng của máy khách, nhưng không bắt buộc.

REST API là một kiến trúc phần mềm tuân theo các nguyên tắc trên để xây dựng các hệ thống phân tán có khả năng mở rộng, linh hoạt và dễ bảo trì.

WordPress REST API có chức năng gì?

WordPress có REST API riêng. Điều này cho phép nền tảng này giao tiếp với hầu hết mọi ứng dụng web và trang web khác, bất kể họ sử dụng ngôn ngữ lập trình nào.

Với API này, ứng dụng của bên thứ ba sẽ có thể truy cập cơ sở dữ liệu WordPress của bạn và lấy dữ liệu từ đó. Trên thực tế, hầu hết các plugin và chủ đề WordPress đều sử dụng REST API của nền tảng để hoạt động bình thường.

WordPress REST API được phát hành như một phần của phần mềm cốt lõi trong phiên bản 4.7. Trước đó, nó chỉ có sẵn dưới dạng plugin.

Trong khi phần mềm WordPress được xây dựng bằng PHP , thì REST API sẽ gửi và nhận dữ liệu dưới dạng đối tượng JSON (JavaScript Object Notation), mở ra nhiều khả năng mới cho các nhà phát triển.

Các lệnh REST API phổ biến nhất là gì?

API REST được thiết kế để tiếp nhận và phản hồi các yêu cầu cụ thể thông qua các lệnh HTML.

Các lệnh phổ biến nhất bạn sẽ sử dụng là:

  • GET: Bạn có thể sử dụng lệnh này để lấy một tài nguyên cụ thể từ máy chủ, như bài đăng hoặc dữ liệu.
  • POST: Lệnh này cho phép bạn sửa đổi tài nguyên trên máy chủ bằng cách thêm mã .
  • PUT: Với lệnh này, bạn có thể chỉnh sửa tài nguyên đã có trên máy chủ.
  • PATCH – Cập nhật một phần dữ liệu của đối tượng.
  • DELETE: Lệnh này xóa tài nguyên khỏi máy chủ.

Ngoài ra, còn có một số lệnh ít phổ biến hơn như HEAD, OPTIONSCONNECT. Các lệnh này được theo sau bởi một dòng cung cấp thêm thông tin về yêu cầu. Chúng được gọi là điểm cuối.

Ví dụ, nếu bạn muốn lấy danh sách các bài đăng đã xuất bản trên trang web của mình, bạn sẽ sử dụng điểm cuối sau:

GET http://mysite.com/wp-json/wp/v2/posts/?status=published

Hãy xem một ví dụ khác. Nếu bạn muốn thêm một trang mới, bạn sẽ sử dụng lệnh sau:

POST http://mysite.com/wp-json/wp/v2/posts/page

Có nhiều thứ bạn có thể làm với bốn lệnh này. Bạn có thể tìm thấy danh sách các điểm cuối trên trang Tài nguyên dành cho nhà phát triển WordPress .

Ví dụ thực tế về WordPress REST API

Dưới đây là một số ví dụ thực tế về WordPress REST API sử dụng cURL, giúp bạn lấy hoặc cập nhật dữ liệu từ trang WordPress bằng các lệnh HTTP:

1. Lấy danh sách bài viết (GET)

curl -X GET https://example.com/wp-json/wp/v2/posts
  • Kết quả: Danh sách bài viết trên website WordPress.

2. Lấy thông tin một bài viết cụ thể (GET)

curl -X GET https://example.com/wp-json/wp/v2/posts/123

Kết quả: Chi tiết bài viết có ID 123.

3. Tạo bài viết mới (POST)

Yêu cầu: Cần đăng nhập với Access Token (JWT hoặc API Key).

curl -X POST https://example.com/wp-json/wp/v2/posts \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"title": "Bài viết mới",
"content": "Nội dung bài viết",
"status": "publish"
}'

Kết quả: Bài viết mới được đăng lên WordPress.

4. Cập nhật bài viết (PUT hoặc PATCH)

curl -X PUT https://example.com/wp-json/wp/v2/posts/123 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title": "Tiêu đề mới"}'

Kết quả: Cập nhật tiêu đề của bài viết có ID 123.

5. Xóa bài viết (DELETE)

curl -X DELETE https://example.com/wp-json/wp/v2/posts/123 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Kết quả: Xóa bài viết có ID 123.

Bảng điều khiển quản trị WordPress.com (gọi là “Calypso”) được xây dựng hoàn toàn bằng JavaScript thông qua REST API.

Ví dụ về WordPress REST API

Ví dụ thực tế về WordPress REST API

Calypso là một ứng dụng web và máy tính để bàn cho phép người dùng thêm nội dung mới, chỉnh sửa bài đăng hiện có và nhiều chức năng khác. Ứng dụng này sử dụng REST API để truy cập dữ liệu trên trang WordPress.com của bạn.

Một ví dụ khác là Block Editor. Trong WordPress tự lưu trữ, Block Editor sử dụng REST API để tương tác với cơ sở dữ liệu của bạn và tạo khối.

Nhiều ấn phẩm trực tuyến như USA Today cũng sử dụng WordPress REST API. Điều này cho phép họ tự động xuất bản các bài viết trên các ứng dụng tin tức khác, như Apple News.

Cách bật và tắt REST API trong WordPress

WordPress REST API được bật mặc định, vì vậy bạn không cần phải làm gì để bật nó.

Mặc dù REST API là một công cụ mạnh mẽ để xây dựng ứng dụng với WordPress, nhưng nó có thể khiến trang web của bạn dễ bị tấn công từ chối dịch vụ phân tán (DDoS) và phần mềm độc hại . Thêm vào đó, tin tặc có thể truy cập dữ liệu của bạn thông qua kết nối với các ứng dụng khác.

Không nên tắt WordPress REST API. Bởi vì làm như vậy có thể dẫn đến sự cố với Block Editor và bất kỳ plugin nào trên trang web của bạn.

Tuy nhiên, có những trường hợp bạn muốn vô hiệu hóa một phần hoặc toàn bộ API này vì lý do bảo mật hoặc hiệu suất.

Tắt REST API:

1. Sử dụng plugin:

  • Đây là phương pháp dễ dàng nhất và được khuyến nghị cho người dùng không có kinh nghiệm về mã hóa.
  • Một số plugin phổ biến để tắt REST API bao gồm:
    • Disable REST API: Plugin này sẽ vô hiệu hóa REST API cho người dùng chưa đăng nhập.

2. Sử dụng mã code:

Phương pháp này yêu cầu chỉnh sửa tệp functions.php của theme hoặc childtheme đang sử dụng.

➤ Chặn REST API đối với người dùng không đăng nhập

Thêm đoạn code sau vào file functions.php của theme:

function disable_wp_rest_api( $access ) {
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_disabled', 'REST API bị vô hiệu hóa.', array( 'status' => 403 ) );
}
return $access;
}
add_filter( 'rest_authentication_errors', 'disable_wp_rest_api' );

📌 Kết quả: Chỉ người dùng đã đăng nhập mới có thể truy cập REST API.

Tắt REST API hoàn toàn

Nếu muốn chặn tất cả các request REST API:

add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

📌 Kết quả: REST API bị vô hiệu hóa trên toàn bộ trang web.

➤ Chặn REST API với .htaccess (Dành cho Apache Server)

Nếu dùng Apache, bạn có thể chặn REST API bằng .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/ [NC]
RewriteRule .* - [F,L]
</IfModule>

📌 Kết quả: Chặn toàn bộ request đến wp-json/.

Khi nào nên tắt REST API?

✅ Khi không dùng REST API để tránh rủi ro bảo mật.

✅ Khi muốn giảm tải tài nguyên server.

❌ Không nên tắt nếu trang web có ứng dụng kết nối API (plugin, mobile app, WooCommerce…).

Cách sử dụng WordPress REST API

Bây giờ, hãy xem cách sử dụng WordPress REST API. Chúng tôi đã đề cập đến một số ví dụ ở trên, nhưng trong phần này, chúng tôi sẽ chỉ cho bạn cách chính xác để truy cập và lấy dữ liệu.

Bước 1: Truy cập REST API

Nếu bạn muốn lấy dữ liệu từ một trang web WordPress trực tiếp, bạn có thể truy cập REST API trực tiếp từ trình duyệt của mình. Tất cả những gì bạn phải làm là nhập địa chỉ sau vào thanh tìm kiếm (thay thế bằng tên miền và phần mở rộng của riêng bạn):

mysite.com/wp-json/wp/v2

Thao tác này sẽ mở tệp JSON của trang WordPress của bạn.

Truy cập REST API

Truy cập REST API

Sau đó, bạn có thể thêm các phần tử vào URL này để truy cập dữ liệu cụ thể, như chúng tôi sẽ chỉ cho bạn ở bước tiếp theo.

Bước 2: Gửi yêu cầu đến REST API

Như đã đề cập trước đó, bạn có thể sử dụng điểm cuối để truy cập dữ liệu cụ thể trên trang web của mình. Nếu bạn muốn lấy danh sách tất cả các bài đăng của mình, chỉ cần thêm điểm cuối /posts vào địa chỉ của bạn:

mysite.com/wp-json/wp/v2/posts

Nếu bạn muốn lấy một bài đăng cụ thể, bạn chỉ cần thêm ID của bài đăng đó (bạn sẽ tìm thấy ID này trên trang Bài đăng trong bảng điều khiển WordPress của mình):

mysite.com/wp-json/wp/v2/posts/4567

Trong khi đó, nếu bạn muốn lấy dữ liệu về người dùng của mình, bạn sẽ sử dụng yêu cầu sau:

mysite.com/wp-json/wp/v2/users

Đây chỉ là những ví dụ đơn giản, nhưng bạn có thể làm nhiều hơn thế nữa. Ví dụ, bạn có thể lấy các bài đăng có chứa các thuật ngữ cụ thể, thay đổi trạng thái của bài đăng từ “bản nháp” thành “xuất bản” và nhiều hơn nữa.

Bước 3: Xác thực yêu cầu của bạn

WordPress REST API cho phép bạn lấy bất kỳ loại dữ liệu nào trên trang web của mình, nhưng không phải tất cả đều có sẵn công khai. Trong một số trường hợp, bạn sẽ cần xác thực yêu cầu của mình.

Để thực hiện các yêu cầu xác thực tới WordPress REST API, trước tiên bạn cần lấy khóa API. Để thực hiện việc này, hãy điều hướng đến Users → Profile trong bảng điều khiển WordPress của bạn .

Sau đó, cuộn xuống phần Mật khẩu ứng dụng . Tại đây, bạn sẽ cần nhập tên cho mật khẩu của mình (để tham khảo) và nhấp vào Thêm mật khẩu ứng dụng mới .

tạo mật khẩu ứng dụng để xác thực tới WordPress REST API

tạo mật khẩu ứng dụng để xác thực tới WordPress REST API

Thao tác này sẽ tạo cho bạn một khóa API, bạn sẽ cần sử dụng khóa này trong các yêu cầu của mình. Ví dụ, nếu khóa API của bạn là “1234567890”, bạn có thể đưa khóa này vào tiêu đề Authorization như sau:

https://mysite.com/wp-json/wp/v2/posts?Authorization=Bearer1234567890

Nhớ thay mã 1234567890 bằng khóa API bạn đã sao chép và xóa mọi khoảng trắng.

Bạn cũng có thể lấy danh sách các bài đăng do một tác giả cụ thể viết, cùng với ID người dùng của họ. Bạn có thể tìm ID của họ bằng cách vào mục Người dùng trong bảng điều khiển WordPress của bạn và nhấp vào tên tác giả. ID sẽ được hiển thị trong URL của trang tác giả của họ.

Giả sử tên tác giả là “Joe” và ID của họ là “123”. Trong trường hợp này, bạn có thể sử dụng URL sau để lấy danh sách tất cả các bài đăng do Joe viết:

https://mysite.com/wp-json/wp/v2/posts?author=123&Authorization=Bearer1234567890

Nếu bạn không tìm thấy ID của người dùng, hồ sơ của họ có thể đã bị sửa đổi theo cách mà ID không còn hiển thị nữa. Trong trường hợp này, bạn có thể lấy danh sách tất cả các bài đăng do người dùng viết bằng tên đăng nhập hoặc địa chỉ email của họ thay vì ID.

Để thực hiện việc này, bạn sẽ phải sử dụng tham số “slug” thay vì tham số “author” trong yêu cầu của mình:

https://mysite.com/wp-json/wp/v2/posts?slug=joe&Authorization=Bearer1234567890

Tham số “slug” cho phép bạn chỉ định tên đăng nhập hoặc địa chỉ email của người dùng. WordPress REST API sẽ trả về danh sách tất cả các bài đăng do người dùng viết.

Tài liệu tham khảo về WordPress REST API

  • REST API Handbook: Đây là một tài nguyên WordPress chính thức ghi lại tất cả các loại thông tin về API REST. Bạn sẽ tìm thấy danh sách các endpoint mà bạn có thể sử dụng, cũng như thông tin chi tiết về một số khía cạnh cấu trúc của REST API mà chúng tôi chưa đề cập đến ở đây.
  • W3Schools tutorials: Mặc dù tài nguyên này không dành riêng cho REST API, nhưng nó cung cấp các hướng dẫn hữu ích có thể giúp bạn tìm hiểu các khái niệm chính, chẳng hạn như phương thức HTTP và JSON.
  • The Ultimate Guide to the WordPress REST API: E-book miễn phí này từ WP Engine chứa nhiều thông tin và ví dụ thực tế. Ngoài ra, nó sẽ hướng dẫn bạn cách hoàn thành một số tác vụ cơ bản (và nâng cao hơn).

Các ứng dụng sử dụng WordPress REST API:

  • Cho phép các ứng dụng bên ngoài tương tác với WordPress: Các ứng dụng di động, ứng dụng web hoặc bất kỳ ứng dụng nào khác có thể sử dụng API để truy cập và thao tác với dữ liệu WordPress.
  • Tạo các ứng dụng web và di động tùy chỉnh: API cho phép các nhà phát triển tạo ra các giao diện người dùng tùy chỉnh cho WordPress, tách biệt khỏi giao diện quản trị mặc định.
  • Tích hợp WordPress với các dịch vụ khác: API có thể được sử dụng để tích hợp WordPress với các dịch vụ bên ngoài như mạng xã hội, hệ thống CRM hoặc các ứng dụng thương mại điện tử.
  • Xây dựng các ứng dụng JavaScript tương tác: WordPress REST API là nền tảng cho Block Editor (Gutenberg) và cho phép xây dựng các ứng dụng JavaScript tương tác mạnh mẽ cho WordPress.

Kết luận

Tóm lại, WordPress REST API là một công cụ mạnh mẽ cho phép các nhà phát triển mở rộng khả năng của WordPress và xây dựng các ứng dụng web và di động sáng tạo.

5/5 - (2 bình chọn)

Bình luận

Select Language