sana öyle gelmiyor mu bazı WordPress eklentileri şanslılar? WooCommerce, Kolay Rakam İndir, Yerçekimi Formları : Bu eklentilerin her biri, düzinelerce üçüncü taraf uzantı ve eklentinin potansiyeline katkıda bulunan daha fazla özellik ile tüm bir şirket tarafından desteklenmektedir. Bu süre zarfında, diğer eklentilerin çoğu ilerleyemez.

Tek bir eklenti, gelişen bir teknoloji ekosisteminin temeli nasıl olabilir? Pek çok yanıt var: Pazara ilk giren siz olun, harika bir ürün yaratın, pazarlamada iyi olun ve aradaki her şey. Ancak bugün teknik cevabın önemli bir kısmına odaklanacağız: WordPress kanca sistemi aracılığıyla genişletilebilirlik.

Bugün bir örnek kullanacağız WordPress Plugin bir eklentiye genişletilebilirlik durumu veren iki temel işlevi kapsar: application_filters() ve do_action().

Uzantıları: eklentileri için Uzantıları

Bu nedenle, "uzantılar" dan bahsettiğimizde, başkaları için yapılmış eklentilere atıfta bulunduğumuz açıktır. Bir örnek alalım: " WooCommerce için Çizgili '.

Henüz yapmadıysanız bu uzantı hiçbir şey yapmaz WooCommerce. yüklerseniz WooCommerce, satın alın ve kurun “ Şerit WooCommerce Ayrı bir eklenti olarak ve WooCommerce'in işlevselliğini artıracak, böylece Stripe ödeme ağ geçidi üzerinden ödemeleri kabul etmeye başlayabilirsiniz.

Yani başka bir eklentiyi belirli bir şekilde geliştiren bir eklentiniz var. Bu bir uzantı. Bunlar, WordPress ekosisteminden gelen zarflardır.

İşlevler nasıl çalışır: apply_filters () ve do_action ()?

Sonraki soru: WooCommerce genişletilmiş işlevselliğini nasıl görmeye başladı? Sonuçta, bir e-ticaret eklentisi yazmayı hayal etmek çok kolay. Sadece birkaç ödeme ağ geçitleri ile çalışır ". Öyleyse, gerçekten şeritlemek istiyorsanız, WooCommerce’i tamamen değiştirmek zorunda kalacaksınız ve muhtemelen WooCommerce’in rakibi olan veya sadece ödeme yapabilecek bir müşterisinin sitesinde yaşayan StripeCommerce adlı kendi aracınızı yaratmanız gerekecek. kişiselleştirilmiş yardım.

Düşünmesi karışık bir durum ama neyse ki WooCommerce çok daha iyisini yapıyor. İki işlevden yararlanır: application_filters () ve do_action (). Bu iki işlev, WordPress'te parantez oluşturmanıza olanak sağlar ve bu genel olarak WordPress Hooks sisteminin temel bir parçasıdır.

application_filters () ve do_action () Oldukça basit bir fark:

  • application_filters (), filtreleri işlevlere bağlamanızı sağlar.
  • do_action (), eylemleri işlevlere bağlamanızı sağlar.

Şimdi bunların nasıl görmek için bir örneğe bakalım.

WooPress kancalarının kullanımı örneği.

Örneğimiz için, bir "Quote of the Day" eklentisi ve bu eklentiyi belirli bir şekilde değiştiren bir uzantı kullanacağız. Tam kodu takip etmek ve görmek için eklentileri bir ZIP dosyası olarak indirin https://wpshout.com/media/2016/10/plugins.zip.

orijinal eklentisi

Bu eklenti, harici bir teklif kitaplığı tarafından sunulan API'yi kullanır ve elde edilen teklifi, her 24 saatte bir yenilenen WordPress geçici verileri olarak depolar. Bu makaleye istediğiniz zaman geri dönün ve yeterince geniş olması gereken "yaşam" konusunda bugünden rastgele bir alıntı göreceksiniz.

eklenti uzantısı

Bildiğimiz gibi, çoğu alıntıdaki sorun, "Carl Sagan" tarafından söylenmemiş olmalarıdır. Uzantımız, bir dizi araç kullanarak bu sorunu düzeltir:

  • Bugünün tarihini ve alıntı Carl Sagan'a ait olan büyük bir antetli kağıt,
  • Carl Sagan'ın söyleyebileceği bir alıntı yapmak için bazı özel kelimeler
  • Orijinal alıntıların yazarları değiştirildi ve alıntılar şimdi doğru bir şekilde Carl Sagan'a atfedildi.

İşte eklenti ve uzantı iş başında:

atıf-içinde-aksiyon

Le kodu

Bunun gerçekleşmesi için iki adım gereklidir:

Orijinal eklenti, harici kodun anahtar noktalarda kendi kodunu değiştirmesine veya eklemesine izin veren kancaları (eylem kancaları ve filtre kancaları) tanımlar. Eklenti bunu başarmak için apply_filters () ve do_action () kullanır.

Uzantı, orijinal eklentiyi gerekli bir şekilde değiştiren eylem ve filtrelerdeki kanca işlevlerini tanımlar.

Orijinal eklentideki anahtar kodu

Bizim için kodun en önemli kısmı, API'den verilerimizi aldıktan sonra yaptığımız şeydir. Bu veriler iki öğeli bir dizi olarak mevcuttur: metin: alıntının metni; ve yazar: alıntıyı söyleyen kişi. Bu nedenle kodumuz şu şekilde görünecektir:

add_shortcode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); function bpc_output_extensible_plugin () {ob_start (); // Görüntülemeden önce asın! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); eğer (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['metin']; $ qod_author = $ qod_data ['yazar']; // İçeriği filtreleyin! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); echo $ qod_text; Eko ' '; echo $ qod_author; Eko ' '; } // Çıktının geri kalanından sonra eylem kancası! do_action ('bpc_after_get_qod_text'); ob_get_clean () döndür; }

Uzantıda anahtar kodu

Eklenti, orijinal eklentiyi değiştirmek için eylemler ve filtrelerden başka bir şey içermez. Uzantının kodu:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

Gördüğünüz gibi, bunlar oldukça standart kullanımlardır " ADD_ACTION () "Ve" add_filter () "Ve her iki işlev de" bpc_qod_text "olarak adlandırdığımız köşeli parantezlere bağlanmıştır.

Sonuç, eklentimizin artık genişletilebilir olmasıdır: ikinci bir geliştirici eklentiyi değiştirerek izleyebilir ve "Carl Sagan diyor diliyorum », Ve bunu orijinal eklentiyi WordPress'teki ana ve alt temalar gibi bir temel olarak kullanırken yapın.

Bu, WooCommerce gibi bir eklenti yapan, çok popüler olan ve yeni özellikler eklemenizi sağlayan bir numaradır.

Bu eğitim için bu kadar. Umarım filtrelerin ve WordPress işlemlerinin farklı kullanım durumlarını daha iyi anlarsınız.