remove_action pada after_setup_theme tidak berfungsi dari tema anak


17

Saya mencoba untuk menghapus tindakan tema untuk tema elegan-tema menggunakan tema anak .. Ini berfungsi ketika saya menghapus tindakan setelah kode add_action di mana saja di dalam parent theme functions.php. Namun, itu tidak berfungsi ketika saya menambahkannya dari child theme functions.php.

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

Hapus tindakan memiliki prioritas yang sama dengan tindakan tambah. Bukankah seharusnya itu bekerja?

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

Jawaban:


25

Seperti yang sudah ditunjukkan oleh @cybmeta, Anda terlalu dini dengan penghapusan Anda. Jadi, Anda harus menunda penghapusan yang sebenarnya, misalnya seperti:

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' );
}

Bekerja! Saya telah mencoba sesuatu yang serupa, tetapi yang buruk! Karena saya meletakkan kondisi menggunakan has_action untuk memeriksa tindakan yang masih tidak ada di child functions.php, sebelum remove_action itu tidak berfungsi !! Terima kasih banyak! 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);
Smoking Sheriff

3

File functions.php dari tema anak dimuat tepat sebelum theme.fp tema induk, jadi ketika Anda menjalankan remove_actiondi tema anak, tindakan yang Anda coba untuk menghapus tidak ada karena itu ditambahkan kemudian.


1
..tapi bukankah prioritas 10 dan hook after_setup_theme harus mengurusnya? Bagaimana saya harus melakukan ini?
Smoking Sheriff

Tidak, argumen prioritas bukan untuk itu. Cukup Anda tidak dapat menghapus sesuatu yang tidak ada. Dengan kata lain, (diambil dari kodeks ) Anda tidak dapat berhasil menghapus tindakan sebelum telah ditambahkan.
cybmeta

1
Jadi, bagaimana mungkin untuk menghapus tindakan yang ditetapkan oleh tema induk?
Aerendir

1

Coba (cukup ganti nama):

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);
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.