Do_action ve add_action arasındaki fark


20

Bu soru yanlış olabilir, bundan emin değilim. Çünkü bu konuda net değilim.

add_actionİşlevimizi belirtilen işleve bağlamak için kullanıldığını biliyorum . Örneğin, add_action('wp_head'.'myfunc');şimdi ne kod içinde myfuncyürütülecek wp_head(). Bu açık ama do_actionne şüphe ediyorum?

Ben zaten mevcut kancalar (wp_head, wp_footer, .. vb) gibi kendi kanca oluşturmak için kullanılır düşünüyorum Eğer ben haklıysam kimse basit örnek ile basit bir anlaşılır cevap gösterebilir.

İnternet farkı denedim ama tüm add_action ve add_filter arasındaki farkı işaret ediyor. Oraya gitmek istemiyorum çünkü önce bunu açıklığa kavuşturmak istiyorum ve sonra oraya taşınacağım.

Birisi bana yardım edebilir mi?

Soru Sonrası DÜZENLE

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');

add_action('custom','custom_register');

Bu eklentide denedim ama uyarı mesajı alamadım.

Ama ben aynı işlevi ile kanca zaman wp_headiyi çalışıyor

/******************working****************/
add_action('wp_head','custom_register');

Geri aramayı kaydettikten do_action('custom'); sonra aradığınızda ne olur ? Ve jQuery'nin yüklendiğinden emin olun.
fuxia

Ben uyarı mesajı ya arka ucunda ya da ön ucunda alamadım
Paz

jQuery yüklendi. Ben wp_headonunla aynı işlevi kanca zaman iyi çalışıyor ama ile değilcustom
güneş

Sun, orijinal Sorunuzun toscho tarafından cevaplandığına inanıyorum ve bunu çözülmüş olarak işaretlemelisiniz. Yaptığınız # 3 ve # 4 düzenlemeleri yeni bir Soruya aittir .
brasofilo

Yanıtlar:


13

do_action( 'unique_name' )Kendi eylemlerinizi oluşturmak için kullanın .

Bunu eklentiniz için bir API sunmak amacıyla kullanabilirsiniz , böylece diğer eklentiler özel işleminiz için geri aramalar kaydedebilir. Örnek: Eklentimde do_action öğesini çağırmam gerekir mi?

Ancak bir temada özel eylemleri (veya filtreleri) de kullanabilirsiniz. Örnek: Özel bölümleri WordPress temasına uygulamanın en iyi yolu

Ve birlikte çalışan bir eklenti ve bir tema yapmak için birleştirebilirsiniz. Örnek: Eklentiden yöntem temada nasıl kullanılabilir?

Özet: add_action( 'foo' )bir geri arama kaydeder, do_action( 'foo' )bu kayıtlı geri aramayı yürütür.


Yardım için teşekkürler ben bu esas olarak API amaçlıdır. Bir örnek denedim ama işe yaramadı.Burada herhangi bir sorun bulabilir misiniz? Check my EDIT @toscho
sun

Bunu kalıtım gibi başka bir vaka olarak söyleyebilir miyiz? sınıfı genişletmek ve geçersiz kılmak yerine bu yoldan gidiyoruz. Bu doğru mu?
Paz

@ sun Hm, evet, ancak her iki yaklaşımı da birleştirebilirsiniz , bunlar birbirini dışlamaz.
fuxia

1

Bu benim tahminim, bu yüzden daha iyi biliyorsanız, lütfen bir yorum yapın, böylece tahminimi güncelleyebilirim.

Eklenti kodunuz daha önce yürütülür wp_head()(buna eklenmiş eylemleri çağıracağını varsayabiliriz). Siz add_action('wp_head','custom_register'), PHP'ye (gelecekte) do_action('wp_head')çağrıldığında, custom_register()aynı zamanda çağrı yapmasını söylersiniz . Aynı şey çağrınız için de geçerlidir, add_action('custom','custom_register')ancak kodunuzda gördüğünüz gibi, çağrı do_action('custom')zaten yapılmıştır ve çağrıldığında, buna henüz bir eylem eklenmemiştir. Bu nedenle Toscho , geri aramayı kaydettikten do_action('custom') sonra aradığınızda ne olacağını sordu . Arka uç ve ön uç hakkındaki cevabınız belirsiz. Aşağıdaki koddaki son iki satırı değiştirirseniz, çalışacağını düşünüyorum:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
do_action('custom');                    // This is called before it will have an effect.

add_action('custom','custom_register'); // Too late - do_action was already called.

0

do_action: Bir eylem kancasını şu durumlarda kaydeder add_action: kayıtlı kancaya bir geri çağırma işlevi ekler .

Misal

Şablonunuzdaki kenar çubuğundan önce bir şey yazdırmak istediğinizi düşünün.

  1. Yoluyla şablon dosyanıza bir işlem kancası ekleyeceksiniz .index.php<?php add_action('bp_sidebar_left'); ?>
  2. Şimdi functions.phpdosyanızda istediğiniz bir şeyi yazdırmak için o kancaya bir geri çağırma işlevi ekleyebilirsiniz.

add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }


-1

Aşağıdaki gibi kullanmanız gerekir:

function custom_register()
{
    echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';

}
.

add_action('custom','custom_register'); // Too late - do_action was already called. 
do_action('custom');                    // This is called before it will have an effect

Benim için çalışıyor
user112289
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.