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.