remove_action en after_setup_theme no funciona desde el tema hijo

9 dic 2014, 11:04:25
Vistas: 20.4K
Votos: 21

Estoy intentando eliminar una acción de tema para un tema de elegant-themes usando un tema hijo. Esto funciona cuando elimino la acción después del código add_action en cualquier parte del archivo functions.php del tema padre. Sin embargo, no funciona cuando lo agrego desde el functions.php del tema hijo.

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

Remove action tiene la misma prioridad 10 que el add action. ¿No debería funcionar?

add_action( 'after_setup_theme', 'et_pb_setup_theme' ); // add_action del tema padre
0
Todas las respuestas a la pregunta 3
1
29

Como ya mencionó @cybmeta, estás eliminando demasiado pronto. Por lo tanto, debes diferir la eliminación real, por ejemplo así:

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' );
}
9 dic 2014 11:29:15
Comentarios

¡Funcionó! He estado intentando algo similar, ¡pero por mi culpa! Como puse una condición usando has_action para verificar una acción que aún no existía en el functions.php hijo, antes de remove_action ¡no estaba funcionando! ¡Muchas gracias!

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 Smoking Sheriff
9 dic 2014 13:18:44
3

El archivo functions.php de los temas hijo se carga justo antes del functions.php del tema padre, por lo que cuando ejecutas remove_action en el tema hijo, la acción que intentas eliminar no existe porque se agrega más tarde.

9 dic 2014 11:18:50
Comentarios

..pero ¿no deberían la prioridad 10 y el hook after_setup_theme encargarse de eso? De todos modos, ¿cómo debería hacer esto?

Smoking Sheriff Smoking Sheriff
9 dic 2014 11:21:12

No, el argumento de prioridad no es para eso. Simplemente no puedes eliminar algo que no existe. En otras palabras, (tomado del codex) no puedes eliminar exitosamente una acción antes de que haya sido añadida.

cybmeta cybmeta
9 dic 2014 11:38:58

Entonces, ¿cómo es posible eliminar una acción establecida por el tema padre?

Aerendir Aerendir
27 may 2017 18:21:33
0

Prueba (solo cambia los nombres):

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);
}
28 jul 2015 20:58:51