Add_filter ve Apply_filters arasındaki fark


17

Buradaki add_filter()ve apply_filters()arasındaki farkın uygun bir açıklamasını aradım ama bulamadım.

Biri kullanmadan önce add_filterveya apply_filtersbir bağlamda hangi bilgileri veya mantığı dikkate alacağımı söyleyebilir .

Bu birini diğerini değil zorunlu kılar mı?

  • O düzeltmek mi add_filtersadece bir değişkene idam bekleyen fonksiyonların kuyruğuna bir işlev ekler ve apply_filterssırayla işlevleri yürütür?

  • Ayrıca apply_filters, bir bağımsız değişkenle (çalıştırılacak işlevin adı) çağrıldığında, bu işlevi kuyruktaki diğer tüm varlıklardan (varsa) önce yürütmesi de doğru mu?


2
Buradaki ve buradaki mevcut belgeler sizin için yeterince açıklanmıyor mu?
t31os

3
Bence bu aslında iyi bir soru. Yeni bir wordpress dev olarak kafa karıştırıcı bir kavram olabilir.
Shawn

Yanıtlar:


26

Aşağıdakilerin çoğu Kodeks'de bulunabilir :


apply_filters

Filtre kancasına takılmış olan geri çağırma işlevleri $tag, bu işlev çağrılarak çağrılır. Bu işlev, $ tag parametresi kullanılarak belirtilen yeni kancanın adıyla bu işlevi çağırarak yeni bir filtre kancası oluşturmak için kullanılabilir.

$value = apply_filters( $tag, $value, $var_1, $var_2, ... );

Özünde:
kullanabilirsiniz apply_filtersiçin filtre belirli bir $value- değerinin kendisine ilişkin olarak, isteğe bağlı olarak verilen değişkenler $var_1yoluyla $var_n.


add_filter

Bir işlevi belirli bir filtre işlemine bağlama.

add_filter( $tag, $function_to_add, $priority, $accepted_args );

Özünde:
Kullanılacak add_filterverilen filtre eylemi (için özel bir işlevi kanca $tagsen tarafından oluşturulan olabilir), apply_filtersdaha önce (ya da bir filtre eylemi dahili veya bir eklenti kaynaklanıyor / Temanızın).


İşte kurgusal bir örnek:

function print_initials( $name ) {

    if ( ! is_string( $name ) ) {
        return;
    }

    $fragments = explode( ' ', $name );

    /**
     * Filter wether to print initials in reverse order.
     *
     * @param bool $reverse Print initials in reverse order?
     */
    if ( apply_filters( 'reverse_initials', FALSE ) ) {
        $fragments = array_reverse( $fragments );
    }

    foreach ( $fragments as $f ) {
        echo substr( $f, 0, 1 );
    }
}

print_initials( 'Some Guy' ); // outputs: SG

add_filter( 'reverse_initials', '__return_true' );

print_initials( 'Some Guy' ); // outputs: GS

Şimdi, fonksiyonumuzu olduğu gibi çağırırsak, baş harfleri soldan sağa yazdırılır - çünkü bu, varsayılan davranış olarak tanımladığımız şeydir.

İkinci kez, baş harfleri ters sırayla alırız - çünkü __return_truefiltre eylemimize bağlanan filtre işlevi her zaman geri döner TRUEve böylece baş harflerinin sağdan sola çıkmasını sağlar.


3
Bu harika bir yanıttır ve filtreleri nasıl geçersiz kılacağınızı gösterir. Teşekkürler.
Shawn
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.