Cómo anular la acción del complemento existente con una nueva acción

18

Estoy usando un complemento. Tiene una acción como esta.

add_action('publish_post', 'old_action');
function old_action($pid) {
    "code goes here"
    }
}

Estoy escribiendo un módulo para este complemento. Así que necesito anular esa antigua función de acción con mi nueva función de acción.

Esta es mi nueva función.

function new_action($pid) {
      "code goes here"
        }
    }

Quiero reemplazar esa función old_action con mi función new_action usando ganchos. ¿Alguien puede ayudarme?

Gracias

Giri
fuente

Respuestas:

33

Puede usar la remove_action()función, así:

remove_action('publish_post', 'old_action');
add_action('publish_post', 'new_action');

Es importante tener en cuenta que si se agregó old_action con un parámetro de prioridad, debe agregarlo a la remove_actionllamada; de lo contrario, no se eliminará. Hay otras implicaciones si old_action se agregó dentro de una clase. Ver aquí para más información.

Tomás Buteler
fuente
3
+1 con la aclaración de que la acción de eliminación debe llamarse después de agregar la función que está eliminando.
Stephen Harris
2
'after_setup_theme' parece un buen lugar para remove_action. Ver: wordpress.stackexchange.com/questions/170663/…
DigitalDesignDj