Sử dụng API REST bên ngoài từ WordPress

Có rất nhiều API REST miễn phí và trả phí trên mạng cung cấp quyền truy cập vào dữ liệu và dịch vụ. Bạn có thể tham gia vào những thứ này để xây dựng các ứng dụng dựa trên web của riêng mình. Tìm hiểu cách thêm một số mã vào trang web WordPress của bạn để sử dụng dữ liệu từ API REST bên ngoài, sau đó hiển thị nó trên trang web của bạn.

Đối với hướng dẫn này, chúng ta sẽ lấy một số dữ liệu từ trang web Flipsum Ipsum, nơi tạo ra văn bản bản sao ipsum. Về cơ bản, nó là một trình tạo gobbledygook miễn phí.

Để làm theo hướng dẫn này, bạn sẽ cần sử dụng một chủ đề con tùy chỉnh để bạn có thể chỉnh sửa functions.php của mình.

Làm thế nào nó hoạt động

Chúng ta sẽ tạo một shortcode kéo một số gobbledygook từ trang Flipsum Ipsum và sau đó hiển thị nó trong đầu ra HTML trở lại trình duyệt. Mã ngắn sẽ được gọi là [flipsum_ipsum] và có các tham số sau:
  • ipsum (Loại Ipsum): Tên của trình tạo ipsum để sử dụng, vì Flipsum Ipsum cho phép chúng tôi chọn loại gobbledygook mà chúng tôi muốn.
  • đoạn văn (Number of Paragraphs): Chúng ta muốn có bao nhiêu gobbledygook.
Truy cập các API REST sử dụng chính xác quy trình giống như truy cập các trang web. Tất cả những gì chúng ta cần làm là tạo một URL, yêu cầu URL đó từ máy chủ có liên quan, sau đó xử lý kết quả. Kết quả API sẽ ở định dạng JSON, PHP có thể chuyển đổi thành một mảng cho chúng tôi. API Flipsum Ipsum rất dễ sử dụng. Đây là một URL mẫu trả về 5 đoạn của Fairy Tale Ipsum.
https://flipsum-ipsum.net/api/icw/v1/generate?ipsum=fairy-tale&paragraphs=5

Hãy viết một số mã

Trong thư mục của chủ đề con tùy chỉnh của bạn, hãy tạo một tệp có tên là shortcode-ipsum.php và dán phần sau vào đó.
/**
 * Flipsum Ipsum Shortcode
 *
 * https://wp-tutorials.tech/add-functionality/access-a-rest-api-from-wordpress/
 */
// If this file is called directly, abort.
if (!defined('WPINC')) {
   die;
}
const FIS_DEFAULT_IPSUM_PARAGRAPHS = 5;
function do_shortcode_flipsum_ipsum($atts) {
   // Parse the shortcode's options.
   $args = shortcode_atts(
      array(
         'ipsum' => '',
         'paragraphs' => FIS_DEFAULT_IPSUM_PARAGRAPHS,
         'debug' => 0,
      ),
      $atts
   );
   $html = '';
   $url = sprintf(
      'https://flipsum-ipsum.net/api/icw/v1/generate?paragraphs=%d',
      $args['paragraphs']
   );
   // If we've specified an ipsum generator, then add it to the URL.
   if (!empty($args['ipsum'])) {
      $url .= sprintf('&ipsum=%s', $args['ipsum']);
   }
   if (empty($json_response = file_get_contents($url))) {
      // No data returned from the server.
      $html .= sprintf('

ERROR: No respone from the server.

'); } elseif (boolval($args['debug'])) { // Render the raw JSON response, so we can see what the server has sent // back to us. $html .= sprintf('
%s
', $json_response); } elseif (empty($ipsum_paragraphs = json_decode($json_response, true))) { // There was a problem converting the server response into an array. $html .= sprintf( '

ERROR:

%s
', esc_html($json_response) ); } else { // Loop through the paragraphs foreach ($ipsum_paragraphs as $ipsum_paragraph) { $html .= sprintf('

%s

', esc_html($ipsum_paragraph)); } } return $html; } add_shortcode('flipsum_ipsum', 'do_shortcode_flipsum_ipsum');
Logic là khá đơn giản. Chuỗi chính bị phá vỡ như thế này:
  1. Tạo URL để truy cập API Flipsum Ipsum. Nếu chúng tôi không chỉ định sử dụng trình tạo ipsum nào, trang web sẽ chọn ngẫu nhiên cho chúng tôi.
  2. Gọi hàm PHP tiêu chuẩn file_get_contents () để truy vấn API bằng URL của chúng tôi.
  3. Nếu API không trả về gì (một chuỗi trống) thì hãy đặt HTML được trả về thành một chuỗi lỗi.
  4. Nếu chúng tôi đã vượt qua
    debug = true
    trong các tham số mã ngắn của chúng tôi, sau đó đặt HTML trả về thành văn bản thô do API trả về. Hữu ích cho việc gỡ lỗi / thử nghiệm.
  5. Nếu PHP không thể chuyển đổi phản hồi API thành một mảng bằng cách sử dụng json_decode () thì hãy trả về một chuỗi lỗi VÀ phản hồi thô, vì vậy chúng tôi có thể tìm ra vấn đề là gì.
  6. Lặp lại các đoạn được trả về và trả lại HTML về giao diện người dùng, với mỗi đoạn được bao bọc trong <p> </p>.

Ví dụ về mã ngắn

Shortcode Description
[flipsum_ipsum] Let the API pick a random ipsum generator for us, and return the default number of paragraphs.
[flipsum_ipsum ipsum=’cafe’ debug=true] Grab some cafe gobbledygook, with the default number of paragraphs, and show the raw API response, so we can see what the Flipsum Ipsum API has really generated.
[flipsum_ipsum ipsum=’recipe’ paragraphs=10] Generated 10 paragraphs of tasty gobbledygook and render it normally, in paragraph HTML elements.
Trong trình chỉnh sửa khối, hãy tạo một khối mã ngắn, nhập [flipsum_ipsum], lưu nội dung của bạn và xem nó. Bùm! Vô nghĩa ngay lập tức cho trang web của bạn!

Mở rộng mã ngắn

Mã ngắn này ở đây khá cơ bản, nhưng hoạt động đủ tốt. Có rất nhiều cách để mở rộng nó.

Lưu vào bộ nhớ cache Phản hồi API trong thoáng qua

Để tăng tốc mọi thứ cho khách truy cập, bạn có thể muốn lưu vào bộ nhớ cache các phản hồi API, vì vậy bạn không phải truy vấn API cho mọi yêu cầu đến trang web của mình. Bạn có thể lưu trữ gobbledygook trong WordPress tạm thời - một kho lưu trữ dữ liệu tồn tại trong thời gian ngắn sẽ biến mất sau một thời gian chờ (ví dụ: 1 giờ).

Nó có thể hoạt động như thế này:

  • Người dùng muốn một số gobbledygook.
  • Chúng ta đã có một số gobbledygook trong thoáng qua chưa?
    • Nếu có thì…
      • Lấy gobbledygook từ thoáng qua của chúng tôi.
    • Nếu không thì…
      • đi và tìm nạp một số gobbledygook từ API Flipsum Ipsum.
      • Lưu trữ gobbledygook mới trong thời gian tạm thời của chúng tôi với thời gian chờ là 1 giờ (hoặc bất kỳ thứ gì bạn muốn).
  • Kết xuất gobbledygook.
Lần tới khi người dùng muốn một số gobbledygook, bạn có thể chỉ cần sử dụng những gì tạm thời, điều này sẽ nhanh hơn nhiều so với việc gọi API từ xa.

Xử lý lỗi tốt hơn

Bản chất của việc tìm nạp dữ liệu từ một máy chủ khác, có thể ở một lục địa khác, có nghĩa là bạn có thể không phải lúc nào cũng nhận được phản hồi. Thay vì sử dụng tiêu chuẩn
file_get_contents ()
, bạn có thể sử dụng PHP cURL để thay thế. Điều này phức tạp hơn để thiết lập, nhưng bạn có thể làm được nhiều việc hơn với nó, bao gồm cả việc bắt mã lỗi đúng cách.

Đó là nó. Đi ra và rải gobbledygook.