Apply_filters (…) WordPress'te gerçekte ne yapar?


123

WordPress'teki bazı işlevleri anlamaya çalışıyorum, ancak apply_filters (...) gerçekten ne yaptığını anlayamıyorum .

Birisi bunu birkaç örnekle benim için açıklığa kavuşturabilir mi?



Bir not apply_filters()da filtreleri hem de geçerlidir olarak işlev için inanılmaz yanıltıcı adıdır ve eylemleri hedef fonksiyonu üzerine kanca
cameronjonesweb

@NabilKadimi, harika bir öneri, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , ancak bu işlev herhangi bir bağımsız değişken kabul etmediğinde (lütfen hangi işlevden bahsettiğimi görmek için bağlantıya tıklayın), $ output değişkeni nasıl değiştirilir , bir sonraki kod bölümünde açıkladığı gibi?
Ramesh Pareek

@RameshPareek Bağlantınız beklendiği gibi çalışmıyor, lütfen bir Github özü kullanın.
Nabil Kadimi

afedersiniz! Lütfen bu sayfadaki Örnek 1: Temel Bilgiler'e gidin .
Ramesh Pareek

Yanıtlar:


104

apply_filters($tag, $value)'değer' bağımsız değişkenini 'bağlanan' (kullanarak add_filter) işlevlerin her birine belirtilen 'etiket' filtresine geçirir . Her işlev, değer üzerinde bazı işlemler gerçekleştirir ve sıradaki bir sonraki işleve geçirilmek üzere değiştirilmiş bir değer döndürür.

Örneğin, varsayılan olarak (WordPress 2.9'da) the_contentfiltre, değeri aşağıdaki işlev dizisinden geçirir:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

Ayrıca, değerini kullanmadığınız herhangi bir şeyi yankılamayı da unutmayın apply_filters($value)...
MrMesees

32

geç cevap

Kısa açıklama

apply_filters()global $wp_filtersdizi ile etkileşime girer . Temel olarak, diziyi geçerli filtrenin (veya kancanın) eklenmiş bir eylemi (/ callback işlevi) olup olmadığını kontrol eder ve sonra onu çağırır.

Uzun açıklama

Bir filtreye veya kancaya bir geri arama / eylem eklediğinizde, geri arama adını genel filtreler dizisine eklemeniz yeterlidir. O zaman, kodda (örneğin, bir şablon, çekirdek veya eklenti dosyası) bir çağrı yapıldığında do_action()veya apply_filters()olduğunda, WordPress dizide arama yaptı ve geri aramayı çağırdı . Filtrelerde kancalardan daha özel olan tek şey, geri aramayı tetiklemek yerine değeri (daha fazla işlemek için) döndürmesidir. Özetle: Kancalar veri eklemek , filtreler ise verileri değiştirmek içindir .


19

En popüler yanıtı ve ek kaynakları göz önünde bulundurarak şunu derledim:

  • $ etiketi, kancanın adıyla eşanlamlı gibi görünüyor. (Bu benim için özellikle sezgisel değil.)
  • the_content, "filtre" türünde bir kanca örneğidir.
  • the_content kancası birden çok filtreden oluşur.
  • Filtreler verileri değiştirir. Temelde veritabanını filtreler, kullanıcılar görüntülemeden önce verileri değiştirirler.
  • Örneğin, apply_filters () işlevinin yaygın bir kullanımı, içerik filtrelerini $ içeriğe uygulamaktır. Bu durumda, çift dönüşler <p>etiketlere, gülen yüzler simgelere vb. Dönüşür.
  • "the_content" bir kancadır, "the_content ()" ise bir işlevdir.

1

En temel terimlerle, apply_filters bir filtre kancasını başlatmak için kullanılır ... add_filter, önceden oluşturulmuş kancalara yeni bir işlev atar.


3
Maalesef bu yanlış bir yoldur: apply_filters () zaten başlatılmış olan filtre kancalarını çağırır ve add_filter () bir filtre kancası oluşturan çağrıdır. Aslında bunu kastettiğini biliyorum, ama işlevlere yanlış yoldan sahipsiniz!
Brian C

apply_filters ($ etiket, $ değer); kodunuzda, add_filter () kullanarak ilettiğiniz $ değerinin bağlanmasına ve değiştirilmesine izin verebileceğiniz bir yer oluşturmanıza olanak sağlar;
Styledev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.