Bagaimana cara membuat API untuk plugin saya?

20

Saya telah mengembangkan plugin untuk WordPress, sebagian besar plugin yang saya kembangkan menggunakan dua atau tiga kelas, karenanya tidak sebesar Budypress atau WooCommerce.

Saya berencana untuk mengembangkan dua plugin open source untuk memberikan semacam sistem yang kompleks (tidak dapat berbagi detail saat ini tetapi nanti selama pengembangan) di mana pengembang lain dapat menyesuaikan fungsi dan sistem untuk mereka harus sama dengan Buddypress dan WooCommerce .

Ketika saya memeriksa file-file plugin dan menyadari mereka telah mendaftarkan tindakan mereka sendiri dan filter yang pengembang dapat memodifikasi sesuai kebutuhan. Namun, masalah saya adalah tidak dapat sepenuhnya memahami, bagaimana saya harus menulis sebuah plugin di mana orang lain memiliki fleksibilitas untuk mengesampingkan fungsi serta menambahkan sendiri.

Saya tahu bahwa sulit untuk memberikan jawaban yang pasti, tetapi saya membutuhkan semacam panduan untuk memulai sehingga saya bisa pergi ke arah yang benar. Apakah saya perlu mendaftarkan tindakan dan filter saya sendiri? Jika ya, bagaimana? jika tidak, apa saja pilihan saya?

Saran Anda akan banyak membantu saya ... Terima kasih

pixelngrain
sumber

Jawaban:

25

API yang Anda tawarkan di plugin atau tema tergantung pada logika kode tertentu. Mungkin tidak ada panduan yang berlaku untuk semua situasi.

Saya adalah kontributor untuk beberapa plugin dengan API, dan apa yang telah saya pelajari sejauh ini adalah:

  1. Jangan menawarkan API sampai Anda benar-benar tahu bagaimana orang menggunakan kode Anda.

    Lepaskan dua atau tiga versi pertama tanpa API apa pun. Tidak ada tindakan atau filter khusus, tidak ada metode atau fungsi publik (dan tidak pernah ada variabel global) jika memungkinkan. Tunggu permintaan dari pengguna Anda, tetapi jangan menambahkan kode sampai Anda tahu struktur kode batin Anda akan berfungsi dalam jangka panjang.

    Mempertahankan kompatibilitas API tidak mudah . Mungkin mencegah perbaikan yang diperlukan di tempat lain. Pikirkan semua variabel global yang tidak dapat dihapus WordPress saat ini. Itu API yang buruk, dan kami terjebak dengannya selama bertahun-tahun, karena orang sudah menggunakannya .

  2. Coba pisahkan API Anda dari sisa kode (lihat tautan sebelumnya untuk suatu gagasan).
    API Anda seharusnya bermanfaat tidak hanya untuk pengembang pihak ketiga, tetapi juga untuk Anda. Jangan tambahkan batasan untuk diri sendiri jika Anda tidak perlu.

  3. Makanlah makanan anjing Anda sendiri.
    Jika Anda menawarkan kait khusus, gunakan dalam kode Anda. Ini akan memberikan pengembang lain contoh yang bermanfaat, dan Anda dapat segera melihat kekurangan yang mungkin terjadi.
    Jika inti WordPress akan menggunakan API Pengaturan yang disebut secara internal, kami tidak akan mendapatkan kekacauan ini hari ini. Mungkin.

  4. Menurut contoh.
    Gunakan bagian baik dari inti API WordPress di plugin Anda. Hindari objek anonim , konstanta, variabel global, dan segala jenis kode yang tidak dapat diprediksi .

  5. Pastikan Anda menggunakan skema penamaan yang konsisten (bukan kekacauan seperti itu ), dan letakkan semuanya di bawah namespace Anda sendiri.

  6. Tulis dokumentasi terlebih dahulu. Lepaskan API baru (bagian dari) nanti.
    Buat contoh yang berguna untuk semuanya. Anda akan kagum melihat berapa banyak lubang dan redudansi yang akan Anda temukan.

  7. Hindari panggilan balik neraka.
    Tawarkan alat khusus untuk men-debug API Anda ketika hal-hal tidak berfungsi sebagaimana mestinya (termasuk skrip dan stylesheet yang tidak diperkecil). Saya telah menulis contoh cara debug AJAX , hanya untuk mengilustrasikan seberapa kreatif Anda di sini. Sekali lagi, alat-alat ini harus dijelaskan dalam dokumentasi Anda sebelum Anda merilisnya.

  8. Alternatif untuk paradigma panggilan balik WordPress bisa menjadi pola Observer . Ini akan meningkatkan penghalang bagi pengembang pihak ketiga, tetapi bisa menghasilkan kode yang lebih baik di kedua sisi.

fuxia
sumber
Anda memberi saya panduan luar biasa. Ini akan membantu saya memulai dalam arah yang benar. Beberapa hal yang tidak pernah saya pikirkan. Terima kasih atas poin-poin itu. Saya akan memulai pertanyaan baru untuk plugin setelah saya mulai mengembangkan. Saya akan sangat membutuhkan bantuan dari Anda para ahli. Saat ini saya sedang membuat diagram alur struktural untuk sistem. Terima kasih banyak lagi .. Saya memilih jawaban Anda tetapi ingin mendengar dari pakar lain juga.
pixelngrain