Lấy dữ liệu Plugin và Theme ở WordPress.org bằng API

Lấy dữ liệu Plugin và Theme ở WordPress.org bằng API

Hướng dẫn cách lấy toàn bộ thông tin của theme và plugins tại thư viện WordPress.org về website của mình bằng API riêng biệt của WordPress.

Hôm qua có một người bạn chat với mình là muốn làm một trang tra cứu thông tin theme/plugin cho thành viên mà chưa biết cách làm thế nào để lấy các dữ liệu của chúng tại thư viện WordPress.Org thông qua cách đơn giản và tối ưu nhất. Ý tưởng đó làm mình sực nhớ tới WordPess.org API mà nó có thể làm được. Khi bạn truy cập vào trang WordPress.org API thì có thể thấy documentation khá ngắn gọn và có thể hơi khó hiểu cho những newbie. Vì vậy mà ở bài này, mình sẽ hướng dẫn bạn sử dụng nó để lấy dữ liệu của các theme và plugin tại thư viện WordPress.org và hy vọng nó giúp ích cho ý tưởng của các bạn.

I. Tiếp cận WordPress.org API

1.1) Địa chỉ API cho plugin

Địa chỉ của API lấy thông tin plugin là http://api.wordpress.org/plugins/info/1.0/, và nếu bạn muốn lấy thông tin chi tiết một plugin thì chỉ cần thêm slug của plugin đó vào đăng sau địa chỉ (mở trang plugin ra, nhìn lên URL sẽ thấy slug). Ví dụ mình muốn lấy thông tin plugin SEO by Yoast thì có:

Kết quả sẽ trả về dữ liệu kiểu dữ liệu tuần tự, một vài trường hợp bạn cần lấy theo dữ liệu kiểu JSON thì chỉ cần thêm .json vào cuối URL là:

Lúc này trình duyệt sẽ gửi một truy vấn với phương thức GET tới server API và trả lại thông tin của plugin như sau:

Tips: cài JSON Formatter cho Google Chrome để xem dữ liệu kiểu JSON dễ dàng.

wpapi-seobyyoastjson  Nếu bạn là một developer thì mình nghĩ các bạn đã biết làm thế nào với đống dữ liệu này. Bạn có thể xử lý bằng kiểu gì bạn thích nếu lấy dữ liệu về một website không phải là WordPress. Còn nếu bạn muốn lấy về website WordPress của bạn thì mình có một cách hay hơn đó là sử dụng hàm plugins_apithemes_apivốn được sử dụng để lấy thông tin của các plugin và theme về Dashboard của WordPress.

II. Sử dụng hàm plugin_api

Ngay tại dòng #29 đến #102 tại /wp-admin/includes/plugin-install.php họ viết một hàm tên plugin_api như sau (đã xóa comment):


 

Và dựa theo đoạn trên đó, chúng ta có thể viết một code lấy dữ liệu plugin về website của mình như sau:

2.1) Hiển thị plugin theo tên plugin (slug)

Cách này phù hợp với bạn nào muốn lấy thông tin plugin dựa theo slug của plugin đó.


 

Bây giờ kết quả trả về sau khi ta in các đối tượng của nó ra là:wpapi-apiobjectNó trả về toàn bộ thông tin mà bạn cần rồi đấy, bây giờ mình thử áp dụng và viết tiếp đoạn in nội dung plugin bằng cách lấy từng đối tượng trong đó ra (name, author,…):

Kết quả:wpapi-echo

2.2) Tùy biến dữ liệu muốn nhận

Mặc định khi bạn gửi truy vấn như phía trên thì máy chủ sẽ nhận rất nhiều dữ liệu mà trong số đó có thể có vài dữ liệu không cần thiết mà plugin_api cho phép loại bỏ nó. Vì vậy nếu bạn muốn loại bỏ một vài dữ liệu không muốn nhận để truy vấn nhanh hơn thì ta sửa biến $args như sau:

Danh sách các fields có thể loại bỏ:

  • added: Ngày xuất bản plugin.
  • compatibility: Danh sách các phiên bản WordPress tương thích.
  • donate_link: Địa chỉ donation.
  • homepage: Địa chỉ website trang chủ của plugin.
  • last_updated: Thời gian cập nhật cuối cùng của plugin.
  • rating: Điểm đánh giá.
  • require: Phiên bản WordPress tương thích.
  • section: Thông tin của trang Description, FAQ, Install,….
  • tags: Các tag của plugin trên thư viện.
  • tested: Phiên bản WordPress đã test.

Toàn bộ code ở phần này:

 2.3) Hiển thị thông tin theo truy vấn

Kiểu này thích hợp cho bạn build một công cụ tìm thông tin plugin theo truy vấn search, hoặc hiển thị danh sách plugin mới, đang hot,….. Cách sử dụng mình đã nói ở trên rồi, ở đây mình chỉ nói qua việc tùy chỉnh biến$args$plugin_api. Chẳng hạn mình muốn lấy danh sách plugin ở http://wordpress.org/plugins/browse/popular/ thì mình sẽ thiết lập như sau: Thiết lập biến tham số $args:

Mình xin giải thích các tham số như sau:

  • browse: tên truy vấn của trang, có 4 loại truy vấn như sau:
    • popular: danh sách plugin thông dụng.
    • new: danh sách plugin mới.
    • updated: danh sách plugin vừa cập nhật.
    • top-rated: danh sách plugin được đánh giá cao.
  • search (thay thế cho browse): tham số lấy danh sách plugin theo truy vấn tìm kiếm.
  • tag (thay thế cho browse): lấy danh sách plugin theo tag.
  • author (thay thế cho browse): lấy danh sách plugin theo tên tác giả.
  • page (tùy ý): Số trang mà bạn muốn lấy kết quả. Ví dụ bạn muốn lấy kết quả ở trang 1.
  • >per_page: số lượng plugin ở mỗi trang.
  • fields (tùy ý): lựa chọn các field cần lấy hoặc loại bỏ. Xem ở phần 2.3.

Lưu ý là giữa tham số browse, search, tagauthor thì chỉ sử dụng một cái thôi nhé.

Thiết lập biến $plugin_api để lấy dữ liệu.

Tức là khi bạn muốn lấy thông tin một plugin thì sử dụng tham số plugin_information, còn muốn truyền query lấy nhiều plugin thì dùng query_plugins. Và bây giờ mình thử print_r nó ra nhé.

Kết quả trả về:wpapi-querypluginsKết quả trả về sẽ là một chuỗi dữ liệu tuần tự chia ra 2 phần chính như sau:

  • info: thông tin của truy vấn
  • plugins: thông tin chi tiết của từng plugin.

Bây giờ mình muốn hiển thị danh sách tên plugin thì sử dụng foreach như sau:

Kết quả:wpapi-foreachqueryapi  Toàn bộ code:


 

III. Lấy thông tin theme

Với theme thì chúng ta sử dụng cũng giống như plugin. Chỉ khác là chúng ta sẽ sử dụng hàm themes_api trong file /wp-admin/includes/theme.php nên đầu tiên ta phải nhúng file đó vào như sau:

3.1) Lấy thông tin của theme qua slug

Kế tiếp là ví dụ lấy thông tin của một theme, viết y hệt như lấy thông tin của plugin:


 

Kết quả trả về khá đầy đủ nhé:wpapi-themeobjRồi, lọc đối tượng ra hiển thị cho đẹp nào.

wpapi-themeinfoToàn bộ code:

3.2) Lấy theme dựa vào truy vấn

Cũng giống như lấy truy vấn plugins, mình có đoạn code sau để lấy danh sách các theme mới nhất:

Kết quả:wpapi-themequery

 Lời kết

Tới đây mình hy vọng là đã truyền đạt đủ những gì mà bạn cần ở tính năng này, bạn có thể tự mày mò thêm để có thể sử dụng tính năng này một cách tối ưu nhất cho dự án của mình. Hy vọng vào một ngày đẹp trời nào đó, mình sẽ viết tutorial hướng dẫn cách bạn làm một widget sử dụng AJAX để tra cứu theme/plugin hoặc shortcode.

WordPress FAQ  » Học WordPress > Lập trình WordPress 


 WordPress FAQ   |   Hoc WordPress   |   Su dung WordPress   |   Lap trinh WordPress |   Plugin WordPress  |  Thuat ngu WordPress    |  Theme WordPress  |  Lap trinh Themes |  Lap trinh plugin |  WordPress API

Ảnh. Lấy dữ liệu Plugin và Theme ở WordPress.org bằng API
Ảnh. Lấy dữ liệu Plugin và Theme ở WordPress.org bằng API

Chia sẻ bài viết

Bình luận