Advertisement
  1. Code
  2. Plugins
Code

Berkomunikasi dengan WordPress.org Plugin API

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Shylchemist (you can also view the original English article)

Selama beberapa minggu terakhir saya bertanya-tanya tentang bagaimana cara menarik data tentang plugin saya yang dihosting di WordPress.org dan menampilkannya di situs web saya. Hal pertama yang muncul dalam pikiran adalah "Web Scraping" tapi sejujurnya ini adalah pekerjaan yang banyak, terasa seperti kembali ke masa lalu, dan bukan sesuatu yang seharusnya dilakukan oleh seorang warga web yang baik. Dalam beberapa kasus, itu bisa ilegal.

Saya kemudian menemukan sebuah plugin bernama "I Make Plugins", yang dikembangkan oleh Mark Jaquith, yang hanya ingin saya inginkan dengan mengambil data dari file readme.txt dari sebuah plugin. Ini berfungsi dengan baik tetapi karena WordPress memungkinkan kita untuk mencari plugin langsung dari backend dan juga untuk melihat plugin favorit kami, saya tahu ada cara yang lebih baik (atau The Wordpress Way) dan pencarian lebih lanjut membawa saya ke WordPress.org API. Tidak ada dokumentasi mendetail di halaman ini, tetapi cukup untuk mulai mengetahui bahwa ada API untuk melakukan ini secara lebih efisien.


WordPress.org plugin API

URL tempat semua pencarian plugin / pembaruan panggilan terkait dilakukan adalah http://api.wordpress.org/plugins/info/1.0/. Untuk mendapatkan ide cepat tentang cara kerjanya, buka tautan ini di browser dan tambahkan slug plugin Anda di bagian akhir, mis. http://api.wordpress.org/plugins/info/1.0/custom-favicon/ dan lihat apa yang dikembalikan.

Permintaan GET berbasis browser ini menampilkan semua informasi plugin untuk plugin "Custom Favicon" dalam format di bawah ini. Dengan mengganti jalur terakhir URL dengan siput plugin Anda, Anda akan dapat melihat detail khusus untuk plugin Anda.

Tidak terlalu nyata, tapi hei, setidaknya ini adalah awal yang baik untuk menguji apakah API memberikan informasi plugin dengan cepat, yang kemudian kami dapat menampilkan cara yang disukai.

Sampai titik ini, sebagian besar dari apa yang saya lakukan hanya didasarkan pada uji coba acak. Satu-satunya sumber yang bisa saya temukan adalah http://dd32.id.au/projects/wordpressorg-plugin-information-api-docs/ yang mencoba menjelaskan berbagai opsi dan argumen yang dapat digunakan saat berkomunikasi dengan API ini.

Jadi bagaimana Cara Kerjanya?

Untuk berkomunikasi dengan http://api.wordpress.org/plugins/info/1.0/ dan dapatkan kembali informasi yang Anda perlukan untuk membuat permintaan $POST dengan 2 hal:

  1. Post Action - seperti, $_POST['action']
  2. Post Body - seperti, $_POST['body'], yang harus menjadi objek serial

Data yang dikembalikan dari API adalah Objek dalam semua kasus (kecuali saat mengunjungi tautan API dari browser). Bahkan dalam kasus kesalahan, data yang dikembalikan masih merupakan objek tetapi dengan satu properti, sebuah error string.

Upaya pertama saya untuk mendapatkan kembali informasi plugin adalah sesuatu seperti contoh di bawah ini:

Contoh Retriving Plugin Information Menggunakan wp_remote_post HTTP API

Kita akan menjelaskan kode tersebut nanti tetapi untuk sekarang kode contoh di atas akan mengembalikan informasi tentang plugin dalam format yang ditunjukkan di bawah ini, dalam hal semuanya bekerja sebagaimana dimaksud:

Jika Anda hanya ingin menampilkan jumlah unduhan, Anda dapat menambahkannya seperti ini:

Catatan: Ini hanya contoh uji dan tidak dimaksudkan untuk digunakan dalam proyek yang sebenarnya karena tidak ada pemeriksaan kesalahan. Jika slug salah atau koneksi ke WordPress.org tidak terjadi, kode di atas akan menampilkan kesalahan.

Kita dapat terus memperluas contoh ini dengan pemeriksaan kesalahan tetapi apakah ada cara yang lebih baik? Dan jawabannya adalah ya, dengan fungsi plugins_api.


Fungsi Plugins_api

Fungsi plugins_api didefinisikan dalam wp-admin/includes/plugin_install.php.

Parameter

Fungsi plugins_api menerima 2 parameter: $action dan $args:

1. Parameter $action

Yang bisa menjadi salah satu dari 3 opsi di bawah ini:

  1. query_plugins
  2. plugin_information
  3. hot_tags

2 Parameter $args.

Argumen bersifat opsional, dan jika diatur, harus menjadi objek serial. Argumen untuk setiap tindakan berbeda dan dijelaskan secara terperinci nanti dalam artikel ini.

Data yang dikembalikan

Data yang dikembalikan tergantung pada tindakan yang dipilih. Tindakan "plugin_information" mengembalikan satu objek sedangkan dua tindakan lainnya mengembalikan array objek. Dalam kasus kesalahan seperti tidak adanya tindakan atau parameter slug, fungsi plugin_api juga mengembalikan objek dengan "kesalahan" satu properti dan nilai (string) "Slug tidak disediakan" atau "tindakan tidak dilaksanakan".

Contoh menggunakan fungsi plugins_api

Sekarang kita akan mencoba contoh yang sama yang kita gunakan sebelumnya tetapi menggunakan fungsi plugins_api daripada wp_remote_post dari HTTP API.

Kode di atas akan mengembalikan data dengan cara yang sama seperti contoh sebelumnya. Seperti yang Anda lihat, ini membutuhkan beberapa baris kode dan koneksi ke WordPress.org Plugin API, unserializing objek yang dikembalikan dan pemeriksaan kesalahan awal semua ditangani oleh fungsi plugins_api.

Dalam kedua contoh di atas, kita hanya menggunakan tindakan "plugin_information" dan siput tanpa argumen lain karena niat kita hanya untuk mengambil semua informasi yang mungkin tentang plugin.

2.1 Argumen untuk query_plugins

2.1.1. browse

Ini menampilkan daftar yang mirip dengan http://wordpress.org/plugins/browse/popular/. Nilai yang mungkin adalah:

  • popular
  • new
  • updated
  • top-rated

2.1.2. search

Istilah yang dicari.

2.1.3. tag

Cari plugin dengan tag.

2.1.4. author

Cari plugin dari seorang penulis.

Catatan: Antara browsesearchtag dan author hanya satu argumen dapat digunakan pada suatu waktu.

2.1.5. page (opsional)

Nomor halaman hasil.

2.1.6. per_page (opsional)

Jumlah hasil yang ditampilkan per halaman.

2.1.7. fields (opsional)

Mirip dengan bidang plugin_information yang tercantum di bawah ini.

Contoh query untuk plugin paling populer:

Mengembalikan larik objek yang mirip dengan apa yang dikembalikan plugin_information.

2.2 Argumen untuk plugin_information

2.2.1. slug

The slug dari plugin yang dibutuhkan untuk mengembalikan informasi.

2.2.2. fields (opsional)

Secara default semua bidang dari readme.txt ditampilkan bersama dengan beberapa bidang tambahan seperti jumlah total unduhan, peringkat dan tautan unduhan. Namun, jika Anda hanya perlu mengambil beberapa bidang saja, Anda dapat menimpanya dengan mengirimkan serangkaian pasangan kunci / nilai, di mana bidang adalah kunci dan benar / salah sebagai nilai tergantung pada apakah Anda ingin bidang tersebut dikembalikan atau tidak.

Contoh override bidang:

Fields yang dapat diganti adalah:

  • added
  • compatibility
  • downloadlink (Catatan: bahwa kunci sebenarnya adalah "download_link" tetapi untuk tidak mengembalikan data ini, kita perlu mengatur field sebagai "tautan unduhan")
  • donate_link
  • homepage
  • Last_updated
  • rating
  • require
  • sections
  • tags
  • tested

2.3 Argumen untuk hot_tags

2.3.1. number

Jumlah tag untuk dikembalikan. Standarnya adalah 100.

contoh tindakan hot_tags:

Ini akan mengembalikan array objek dengan kunci yang menjadi slug tag dan setiap objek akan berisi:

  • Tag Name
  • Tag Slug
  • Count - jumlah plugin yang ditandai dengan tag ini

Summary

Secara internal inti WordPress menggunakan fungsi plugins_api untuk menampilkan daftar plugin berdasarkan kata kunci yang digunakan untuk pencarian, untuk mengambil plugin favorit Anda dan juga untuk menampilkan informasi tentang plugin tertentu. Dengan mengubah parameter tindakan, Anda dapat menggunakan fungsi untuk melakukan tugas yang berbeda.

Informasi tentang WordPress.org API tidak tersedia secara luas dan alasannya mungkin adalah untuk menghindari penyalahgunaan sistem, maka pastikan permintaan Anda ke WordPress.org API terbatas dan dilakukan dengan cara yang benar. Gunakan Transien untuk menyimpan data sehingga Anda tidak perlu membuat permintaan pada setiap pemuatan halaman.

Dalam tutorial mendatang kita akan membuat plugin dengan shortcode untuk menampilkan jumlah unduhan plugin Anda.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.