remove_action() y remove_filter()
remove_action() y remove_filter() eliminan un callback que fue registrado previamente con add_action() o add_filter(). Son la forma correcta de desactivar funcionalidades sin modificar el código original.
Sintaxis
remove_action( $hook, $callback, $prioridad );
remove_filter( $hook, $callback, $prioridad );
// ⚠ La prioridad debe coincidir EXACTAMENTE con la del add_action/add_filter original
Ejemplos del núcleo de WordPress
// Eliminar el meta generator (<meta name="generator">) del head
remove_action( 'wp_head', 'wp_generator' );
// Eliminar el feed RSS del head
remove_action( 'wp_head', 'feed_links', 2 );
// Eliminar el pingback del head
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
// Eliminar el filtro de emojis de WordPress
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_filter( 'the_content', 'convert_smilies', 20 );
Eliminar un hook de un plugin/tema — timing correcto
// El callback debe estar registrado antes de intentar eliminarlo
// Usa un hook de mayor prioridad o espera al hook adecuado
add_action( 'init', 'eliminar_hooks_tema', 20 ); // prioridad 20 = después del setup del tema (prioridad 10)
function eliminar_hooks_tema() {
// Eliminar algo que el tema registró en after_setup_theme
remove_action( 'wp_footer', 'tema_creditos_footer' );
}
Eliminar método de una clase instanciada
// Necesitas acceso a la instancia del objeto
global $mi_plugin;
remove_action( 'wp_head', [ $mi_plugin, 'añadir_meta_tags' ], 10 );
Limitación importante
// ❌ NO se puede eliminar una closure
add_action( 'init', function() { /* ... */ } );
// No hay forma de hacer remove_action de esto — sin nombre, sin referencia
// ✅ Siempre nombra las funciones si quieres poder eliminarlas después
