Cómo sobrescribir una acción de plugin existente con una nueva acción

28 ene 2012, 08:35:34
Vistas: 32.7K
Votos: 24

Estoy usando un plugin que tiene una acción como esta.

add_action('publish_post', 'old_action');
function old_action($pid) {
    "código va aquí"
    }
}

Estoy escribiendo un módulo para este plugin. Necesito sobrescribir esa función de acción antigua con mi nueva función de acción.

Esta es mi nueva función.

function new_action($pid) {
      "código va aquí"
        }
    }

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

Gracias

0
Todas las respuestas a la pregunta 1
3
44

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

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

Es importante tener en cuenta que si old_action fue añadido con un parámetro de prioridad, debes incluirlo también en la llamada a remove_action, de lo contrario no se eliminará correctamente. Hay otras implicaciones si old_action fue añadido dentro de una clase. Consulta aquí para más información.

28 ene 2012 09:13:34
Comentarios

+1 con la aclaración de que la acción remove debe llamarse después de que se haya añadido la función que está eliminando.

Stephen Harris Stephen Harris
28 ene 2012 10:24:42

'after_setup_theme' parece un buen lugar para remove_action. Ver: http://wordpress.stackexchange.com/questions/170663/remove-action-on-after-setup-theme-not-working-from-child-theme

DigitalDesignDj DigitalDesignDj
10 sept 2016 22:48:20

Lo intenté durante bastante tiempo y me estaba rascando la cabeza - ¡al final "after_setup_theme" hizo que funcionara! ¡Gracias!

frizzant frizzant
27 dic 2023 16:07:35