Mengaitkan ke plugin

12

Saya sedang mengerjakan plugin yang idealnya dapat melakukan hal-hal ketika pengguna melakukan sesuatu melalui plugin yang berbeda .

Saya dapat menambahkan pengait khusus di plugin tersebut, tetapi jelas ini tidak berfungsi dengan baik ketika saya ingin mendistribusikan plugin saya. Apakah ada cara yang baik untuk menambahkan kait ke plugin orang lain dari plugin saya sendiri? Apakah satu-satunya solusi nyata untuk meminta penulis untuk menyertakan kait kustom sehingga pengembang lain dapat membangun dari pekerjaan mereka?

Contoh: Saya ingin melakukan sesuatu di plugin saya ketika seseorang me-retweet sebuah artikel. Jika ada pengait khusus pada plugin retweet populer apa pun yang dapat saya gunakan untuk menghubungkan dan mematikannya, itu akan bagus. Tidak ada, jadi saya bisa memodifikasi plugin mereka untuk memasukkannya, tetapi itu hanya berfungsi untuk salinan saya, dan saya tidak ingin mencoba mendistribusikannya kembali.

Apakah kita hanya perlu mencoba dan menjadi pengembang plugin yang lebih baik sehingga kita semua bisa bermain bagus bersama?

Ryan Elkins
sumber
1
Pertanyaan bagus!
MikeSchinkel
"Apakah satu-satunya solusi nyata untuk meminta penulis menyertakan kait kustom sehingga pengembang lain dapat membangun pekerjaan mereka?" Dalam kebanyakan kasus, ya. Ada situasi tertentu di mana Anda dapat mengatur untuk menghubungkan ke plugin mereka secara tidak langsung, tetapi biasanya tidak demikian. Beri tahu mereka untuk menulis plugin mereka seolah-olah mereka menulis untuk inti WordPress - sertakan filter / tindakan di mana pun orang membutuhkannya.
Viper007Bond
1
Petunjuk: Dokumentasikan kait yang disediakan plugin Anda agar penulis plugin lain dapat berinteraksi dengannya.
hakre

Jawaban:

6

@Ryan Elkins:

Saya kira jawabannya tergantung pada bagaimana impor setiap kasus penggunaan adalah untuk Anda. Dalam beberapa kasus itu akan menjadi sesuatu yang Anda butuhkan cepat-dan-kotor, dalam kasus lain itu mungkin kasus penggunaan yang lebih signifikan. Berikut adalah dua hal yang terlintas dalam pikiran:

Cari Kait Alternatif dalam WordPress Core

Jika itu sesuatu yang cepat dan kotor beberapa kali Anda dapat menggunakan kait hilir lainnya dari inti untuk memodifikasi apa yang Anda butuhkan, atau kait kait hulu dan hilir melalui penggunaan ob_start()/ ob_end_clean()(lihat jawaban @Todd Perkins untuk " Berurusan dengan output HTML besar melalui kode plugin " untuk contoh kode.)

Untuk melacak kait yang bisa Anda gunakan, periksa plugin Instrument Hooks yang saya posting kemarin untuk membantu Anda menemukan kait yang berpotensi Anda gunakan.

Kirim Patch dengan Kait yang Diinginkan ke Pengembang Plugin

Jika use-case Anda lebih penting bagi Anda atau komunitas, saya sarankan untuk teruskan dan menambahkan hook yang Anda butuhkan ke plugin. Kemudian ujilah dengan baik untuk memastikannya benar-benar menangani kasus penggunaan Anda dan setelah itu Anda dapat mengirimkan tambalan kepada pengembang plugin dengan harapan dia akan menerapkannya. Dengan cara ini Anda membuatnya semudah mungkin pada mereka dengan memberi mereka kode teruji dan Anda bisa mengerjakan sendiri use case untuk memastikan itu benar-benar apa yang Anda butuhkan. Saya tidak dapat memberi tahu Anda seberapa sering saya pikir saya perlu kait tertentu hanya untuk menemukan setelah mencoba menerapkan satu saya membutuhkan sebuah kait tetapi yang berbeda dari yang saya bayangkan sebelumnya.

Jika Anda tidak terbiasa membuat tambalan di sini adalah artikel yang bagus tentang menambal inti WordPress yang sebagian besar berlaku untuk menambal plugin dan bagi yang tidak, semoga akan jelas apa yang harus dilakukan:

Semoga ini membantu?

PS Satu hal yang saya temukan agak mengecewakan dan bahwa alamat pertanyaan Anda adalah persentase plugin yang dirancang hanya untuk pengguna akhir, yaitu yang tidak memiliki kaitannya sendiri. Bayangkan jika WordPress dirancang seperti kebanyakan plugin? Ini akan menjadi tidak fleksibel dan solusi yang sangat niche.

Mungkin hal-hal akan berbeda jika WordPress memiliki kemampuan untuk menginstal secara otomatis plugin yang bergantung pada plugin lain? Karena saya biasanya harus menulis banyak fungsi yang saya butuhkan dari awal karena klien menginginkan sesuatu dengan cara tertentu dan plugin yang tersedia, sementara 90% di sana tidak memungkinkan saya fleksibilitas untuk memperbarui 10% sisanya.

Saya benar-benar berharap mereka yang memimpin komunitas WordPress akan mengidentifikasi cara untuk memastikan bahwa plugin dihargai untuk mengikuti praktik terbaik (seperti menambahkan kait untuk pengembang lain) seperti halnya jawaban yang baik diberikan pada situs StackExchange.

MikeSchinkel
sumber
2

Apakah kita hanya perlu mencoba dan untuk lebih baik pengembang plugin sehingga kita semua bisa bermain bagus bersama-sama?

Sebagai permulaan, ya.

Apakah satu-satunya solusi nyata untuk meminta penulis untuk menyertakan kait kustom sehingga pengembang lain dapat membangun dari pekerjaan mereka?

Itu akan menjadi solusi yang bagus.

Anda juga bisa menyalin plugin lain dan hanya menambahkan perubahan apa pun, meskipun itu akan lebih merepotkan.

Arlen Beiler
sumber
2

Saya pikir Anda menjawab pertanyaan Anda dalam pertanyaan, sehingga menjadi sedikit retoris.

Jelas Anda sedang berbicara tentang sistem yang mirip dengan yang didukung Google dengan Android dan sistem Intent, bahwa aplikasi dapat mempublikasikan tindakan yang dapat dilakukan atas nama aplikasi lain, yang kemudian dapat menghubungkannya dan mengirimkan data kembali dan sebagainya. Secara pribadi saya pikir ini adalah sesuatu yang perlu kita tuju sebagai pengembang yang baik - kita menggunakan WordPress karena sudah mengagumkan, cukup mengagumkan untuk membuat keputusan apakah akan menggunakannya atau mengembangkan produk dalam-rumah yang serupa dengan cukup mudah dalam banyak kasus. Repositori plugin itu sendiri lagi hal yang sama, sebagian besar sebagai pengguna akhir + pengembang - mengapa mengembangkan plugin twitter ketika ada yang sangat bagus.

'Mengapa mengembangkan duplikat' yang sama adalah inti dari pertanyaan Anda di sini. Sistem Android Intent memungkinkan aplikasi untuk memanfaatkan fungsi yang sudah dibuat, dan mengirimkan data di antara mereka, dan ini populer dan sering digunakan, karena didorong sangat berat. Ada sistem serupa yang sudah diterapkan ke WordPress, tetapi sangat jarang digunakan di luar kait yang ada dalam kode inti, yang digunakan banyak.

Akan bermanfaat bagi komunitas jika ada lebih banyak pengait di plugin khusus, tetapi seperti yang Anda katakan, tidak ada cara mudah untuk menambahkan pengait ketika / di mana Anda membutuhkannya.

Dalam hal plugin Twitter yang ingin Anda hubungi, kirimkan email kepada pembuatnya, saya yakin dia akan dengan senang hati menambahkannya untuk Anda.

Jika ada tempat yang Anda pikir akan menjadi tempat yang baik untuk memasang pengait di plugin Anda, lakukan, dan dokumentasikan dengan baik. Jika lebih banyak orang mulai memasukkan kait ke dalam plugin, atau ada dorongan umum untuk melakukannya, itu akan terjadi pada akhirnya.

Jadi untuk menjawab pertanyaan terakhir Anda:

Apakah kita hanya perlu mencoba dan menjadi pengembang plugin yang lebih baik sehingga kita semua bisa bermain bagus bersama?

Iya.


Sunting: Saya sudah memikirkan lebih lanjut tentang pertanyaan aktual dan cara terbaik menerapkan kait, tidak bisakah Anda menambahkan tindakan yang akan berjalan jika fungsi tertentu yang Anda coba jalankan dari plugin ada?

tak seorangpun
sumber
Itu akan berhasil, tetapi bagaimana jika fungsi plugin yang berbeda memiliki nama yang sama?
Arlen Beiler
Ups, mungkin tidak, karena Anda harus tahu apa yang sedang di-retweet dan oleh siapa. Memeriksa fungsi adalah solusi run-time, yang kita butuhkan adalah solusi real-time, yang berjalan ketika fungsi tersebut dipanggil atau mengembalikan data.
Arlen Beiler
@ Arlen - Katakanlah Anda harus membuat fungsi Anda sendiri yang memeriksa apakah fungsi tertentu ada di sana. Itu akan dijalankan setelah 'plugins_loaded', dan jika ada di sana ia menetapkan boolean yang memungkinkan fitur-fiturnya. Ini sangat tergantung pada kode tidak berubah, tetapi saya tidak bisa melihat mengapa itu tidak berhasil?
tidak ada yang
0

mendefinisikan suatu fungsi:

function my_footer() {
    do_action('my_footer');
}

sekarang Anda dapat mengait pada kail ini: add_action('my_footer', 'example_function', 1);# informasi lebih lanjut lihat di posting saya .

bueltge
sumber
bukan => sekarang, ini = = ini sendiri. Benar?
Arlen Beiler
Saya mengerti bagaimana cara menambahkan kait khusus - pertanyaannya adalah bagaimana menghubungkan plugin orang lain, idealnya dengan cara yang tidak memerlukan modifikasi langsung dari plugin mereka.
Ryan Elkins
@ Andre: terima kasih banyak, maaf untuk bahasa Inggris saya yang buruk @Ryan: itu tidak mungkin, ketika plugin tidak memiliki hook; tetapi Anda dapat memeriksa untuk mengganti fungsi atau kelas, ketika penulis meminta ini di plugin-nya. Tetapi dimungkinkan untuk meminta plugin aktif dan kait sebelumnya di WP sebagai plugin lain dan menggantikan fungsinya.
bueltge