after_setup_theme öğesinde remove_action alt temasından çalışmıyor


17

Bir çocuk tema kullanarak zarif temalar tema için bir tema eylem kaldırmaya çalışıyorum .. Bu ana tema function.php herhangi bir yerinde add_action kodu sonra eylem kaldırdığınızda çalışır. Ancak, alt tema işlevlerinden eklediğimde çalışmaz. Php.

remove_action ('after_setup_theme', 'et_pb_setup_theme' , 10);

Kaldırma eylemi, ekleme eylemiyle aynı önceliğe sahiptir. Çalışmamalı mı?

add_action( 'after_setup_theme', 'et_pb_setup_theme' ); //parent theme add_action

Yanıtlar:


25

@Cybmeta'nın zaten işaret ettiği gibi, kaldırmanız için çok erken. Yani, gerçek kaldırmayı ertelemelisiniz, örneğin:

add_action( 'after_setup_theme', 'wpdev_170663_remove_parent_theme_stuff', 0 );

function wpdev_170663_remove_parent_theme_stuff() {

    remove_action( 'after_setup_theme', 'et_pb_setup_theme' );
}

Yaradı! Ben benzer bir şey deniyorum, ama benim kötü! Ben kullanarak bir koşul koymak yana has_action bir kontrol etmek hala var olmayan çocuk functions.php harekete önce remove_action işe yaramıyordu !! Çok teşekkürler! function etn(){ if(has_action('after_setup_theme', 'et_pb_setup_theme')){ remove_action ('after_setup_theme', 'et_pb_setup_theme' ); } } add_action ('after_setup_theme', 'etn', 9);
Sigara Şerif

3

Alt temaların function.php dosyası, üst tema işlevlerinden hemen önce yüklenir. Php, bu nedenle remove_actionalt temada çalıştırdığınızda , kaldırmaya çalıştığınız eylem, daha sonra eklendiğinden var olmaz.


1
..ama 10 öncelikli değil ve after_setup_theme kanca bununla ilgilenmelidir? Bunu nasıl yapmalıyım?
Sigara Şerif

Hayır, öncelik argümanı bunun için değil. Sadece var olmayan bir şeyi kaldıramazsınız. Başka bir deyişle, ( kodx'ten alınmış ), eylem eklenmeden önce başarılı bir şekilde kaldıramazsınız.
cybmeta

1
Peki, ana tema tarafından ayarlanan bir eylemi kaldırmak nasıl mümkün olabilir?
Aerendir

1

Deneyin (sadece adları değiştirin):

add_action( 'init' , 'myyy_remove' , 15 );
function myyy_remove() {
        remove_action('ACTION_NAME', 'my_function_name_Something'   ,11);
        remove_action('ACTION_NAME', 'my_function_name_Another'     ,11);
}
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.