Limit yok ve performans cezası yok. Nedenini anlamak için, tüm kancaların WP ekosisteminde nasıl saklandığını anlamanız gerekir.
Her şeyden önce, tüm kancaların nerede saklandığını ve nasıl yapıldığını anlamanız gerekir. Filtreler ve eylemler için tüm kancalar, denilen genel değişkende saklanır wp_filter
, evet evet eylem kancaları da bu değişkende saklanır. Bu değişken ilişkilendirilmiş dizidir; burada anahtar eylem veya filtrenin adıdır ve değer başka bir ilişkilendirilebilir dizidir. Örneğin, 'init' eylemine bir göz atalım, bu aşamada aşağıdaki yapıyı göreceğiz:
$wp_filter = array(
'init' => array(...),
);
Bu alt dizi, diziler olarak sayısal anahtarlara ve değerlere sahiptir. Sayısal anahtarlar önceliklerimizdir. Sayısal anahtarlarla ilişkili diziler, aynı önceliğe sahip kancaların listesini içerir. Yani ararsak add_action( 'init', 'wpse8170_my_first_init', 20 )
, sonra arar add_action( 'init', 'wpse8170_my_second_init', 20 )
ve son olarak ararsak add_action( 'init', 'wpse8170_my_third_init', 10 )
, örneğimiz şöyle görünecektir:
$wp_filter = array(
'init' => array(
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
10 => array(
'wpse8170_my_third_init' => array(...),
),
),
);
Şimdi init
eylem tetiklendiğinde tüm kancalar ksort
işlev kullanımı ile sıralanacaktır ve dizimiz şimdi görünüyor:
array(
10 => array(
'wpse8170_my_third_init' => array(...),
),
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
),
Ve tüm kancalar bu kuyrukta yürütülecek: önce 'wpse8170_my_third_init'
, sonra 'wpse8170_my_first_init'
ve sonunda 'wpse8170_my_second_init'
.
Yani sınırlar ve cezalar olmadığını görebilirsiniz ve PHP ortamınız tarafından ilişkili dizi için anahtar olarak kabul edilebilir herhangi bir değeri kullanabilirsiniz.