it-swarm.asia

Eklentilere bağlanma

Bir kullanıcı bir farklı eklenti aracılığıyla bir şey yaptığında ideal olarak bir şeyler yapabilecek bir eklenti üzerinde çalışıyorum.

Bu eklentilere özel kancalar ekleyebilirim ama açıkçası bu eklentiyi dağıtmak istediğimde işe yaramaz. Kendi eklentimden başkalarının eklentilerine kanca eklemenin iyi bir yolu var mı? Diğer geliştiricilerin çalışmalarından faydalanabilmeleri için yazardan özel kancalar eklemesini isteyen tek çözüm bu mu?

Örnek: Birisi bir makaleyi yeniden retweetlediğinde eklentimde bir şeyler yapmak istiyorum. Popüler retweet eklentisi ne olursa olsun, takılabildiğim ve ateşleyebildiğim özel bir kanca olsaydı, bu harika olurdu. Yok, bu yüzden eklemek için eklentilerini değiştirebilirim, ama bu sadece kopyam için işe yarıyor ve bunu yeniden dağıtmayı denemek istemiyorum.

Birlikte güzel oynayabilmemiz için daha iyi eklenti geliştiricileri denememiz gerekecek mi?

12
Ryan Elkins

@Ryan Elkins:

Sanırım cevabı, her kullanım çantasının sizin için ne kadar ithalat olduğuna bağlı. Bazı durumlarda hızlı ve kirli bir ihtiyaç olabilir, bazılarında ise daha önemli bir kullanım durumu olabilir. İşte akla gelen iki şey:

WordPress Çekirdeğinde Alternatif Kancalar arayın

Bazı zamanlar hızlı ve kirli bir şeyse, ihtiyacınız olanı değiştirmek için göbekten diğer aşağı akış kancalarını veya ob_start()/ob_end_clean() kullanarak hem yukarı hem aşağı akış kancalarını kullanabilirsiniz (bkz. @Todd Perkins cevap to "Bir kod örneği için"eklenti kodu ile büyük HTML çıktısı ile ilgilenmek.)

Kancaları izlemek için, potansiyel olarak kullanabileceğiniz kancaları bulmanıza yardımcı olmak için dün yayınlanan Instrument Hooks plugin I'i kontrol edebilirsiniz.

Eklenti Geliştiricisine İstediğiniz Kancanızla Bir Yama Gönderin

Kullanım durumunuz sizin veya toplum için daha önemliyse, devam etmenizi ve ihtiyacınız olan kancayı eklentiye eklemenizi öneririm. Ardından, kullanım çantanıza gerçekten yanıt verdiğinden emin olmak için test edin, ardından eklenti geliştiricisine uygulayacağını umarak bir düzeltme eki gönderebilirsiniz. Bu şekilde, onlara test edilmiş kodları vererek mümkün olduğu kadar kolay hale getirirsiniz ve gerçekten ihtiyacınız olan şey olduğundan emin olmak için kullanım çantası aracılığıyla kendiniz çalışabilirsiniz. Sadece bir tane kancaya ihtiyacım olduğunu ancak bir tane daha uyguladığımdan sonra bulmak için belirli bir kancaya ihtiyacım olduğunu düşündüğümü söyleyemem.

Eğer burada bir yama oluşturmaya aşina değilseniz, en çok eklenti eklentileri için uygulanan ve bunun için ne yapılacağı açıkça belli olmayacak olan WordPress çekirdeğini yamalamakla ilgili iyi bir makale:

Bu yardımcı olur umarım?

Not; Biraz hayal kırıklığı yarattığım ve sorunuzun yöneltdiği bir şey, yalnızca son kullanıcılar için tasarlanmış eklentilerin yüzdesi, yani kendi kancaları yok. WordPress'in çoğu eklenti gibi tasarlandığını hayal edin. Esnek ve çok niş bir çözüm olurdu.

WordPress diğer eklentileri bağlı olan eklentileri otomatik yükleme yeteneğine sahip olsaydı, belki bazı şeyler farklı olurdu? Genellikle, sıfırdan ihtiyaç duyduğum işlevselliği yazmam gerekiyor, çünkü müşteriler işleri kesin bir şekilde ve mevcut eklentileri isterken,% 90'ı kalan% 10'u güncelleme esnekliğine izin vermiyor.

Gerçekten, WordPress topluluğunun liderlerinin, en iyi uygulamaları takip etmek için (diğer geliştiriciler için kanca eklemek gibi) eklentilerin ödüllendirilmesini sağlamanın bir StackExchange sitesinde ödüllendirilmesini sağlamanın bir yolunu belirlemelerini diliyorum.

6
MikeSchinkel

Sadece denemeye mi ihtiyacımız var? ve  to daha iyi eklenti geliştiricileri olmak için hep birlikte Nice oynayabilir miyiz?

Yeni başlayanlar için evet.

Diğer geliştiricilerin çalışmalarından faydalanabilmeleri için yazardan özel kancalar eklemesini isteyen tek çözüm bu mu?

Bu iyi bir çözüm olurdu.

Ayrıca, diğer eklentiyi de kopyalayabilir ve herhangi bir değişiklik ekleyebilirsiniz, ancak bu daha fazla güçlük getirir.

2
Arlen Beiler

Sanırım sorudaki sorunuzu yanıtlayın, böylece biraz retorik hale gelsin.

Açıkçası, Google’ın Android ve Niyet Sistemi ile teşvik ettiği sisteme benzer bir sistemden bahsediyorsunuz, bir uygulamanın diğer uygulamalar adına yapabileceği eylemler yayınlayabiliyor, bunlar daha sonra bunları birbirine bağlayıp verileri geri aktarabilir ve ileri. Şahsen, iyi geliştiriciler olarak yönelmemiz gereken bir şey olduğunu düşünüyorum - WordPress kullanıyoruz çünkü zaten harika, onu kullanıp kullanmamaya ya da benzer bir kurum içi ürünü geliştirmeye karar vermek çoğu zaman için oldukça kolay. Eklenti havuzunun kendisi yine aynı şeydir, çoğunlukla son kullanıcı + geliştirici olarak - mükemmel bir tane varken neden bir Twitter eklentisi geliştirmeliyim.

Aynı 'neden yinelemeler geliştirmek' de burada sorunuzu özetliyor. Android Intent sistemi, uygulamaların önceden oluşturulmuş işlevleri kullanmasına ve aralarında veri iletmesine olanak tanır ve bu popülerdir ve sıklıkla kullanılır, çünkü çok fazla itilir. WordPress'e zaten uygulanmış olan benzer bir sistem var, ancak çok kullanılan, temel kodda bulunan kancaların ötesinde çok nadiren kullanılıyor.

Özel eklentilerde daha fazla kanca varsa, topluluğun yararına olur, ancak dediğiniz gibi, ihtiyaç duyduğunuz yerde/zamanda kanca eklemek için kolay bir yol yoktur.

Bağlanmak istediğiniz Twitter eklentisi açısından, yazara bir e-posta gönderin, sizin için onları eklemekten mutluluk duyacağından eminim.

Eğer eklentinize bir çengel koymak için iyi bir yer olacağını düşündüğünüz bir yer varsa, yapın ve belgeleyin. Daha fazla kişi kancaları eklentilere sokmaya başlarsa veya buna genel bir baskı yaparsa, en sonunda olacak.

Yani şu sondaki sorunuza cevap vermek için:

Birlikte güzel oynayabilmemiz için daha iyi eklenti geliştiricileri denememiz gerekecek mi?

Evet.


Düzenleme: Asıl soru ve kancaları uygulamanın en iyi yolu hakkında biraz daha düşündüm, eklentiyi çalıştırmaya çalıştığınız belirli bir işlev varsa, çalıştırılacak bir işlem ekleyemez miydiniz?

2
nobody

bir işlev tanımlayın:

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

şimdi bu kancaya bağlanabilirsiniz: add_action('my_footer', 'example_function', 1); # daha fazla bilgi bkz. benim post .

0
bueltge