Como substituir a ação de plug-in existente por uma nova ação

18

Estou usando um plugin. Tem uma ação como esta.

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

Estou escrevendo um módulo para este plugin. Então, eu preciso substituir essa função de ação antiga pela minha nova função de ação.

Esta é a minha nova função.

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

Quero substituir essa função old_action pela minha função new_action usando ganchos. Alguém pode me ajudar?

obrigado

Giri
fonte

Respostas:

33

Você pode usar a remove_action()função, assim:

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

É importante observar que, se a ação_ antiga foi adicionada com um parâmetro de prioridade, você deve adicioná-la à remove_actionchamada, caso contrário ela falhará em removê-la. Existem outras implicações se a ação_ antiga foi adicionada dentro de uma classe. Veja aqui para mais informações.

Tomas Buteler
fonte
3
+1 com o esclarecimento de que a ação de remoção deve ser chamada após a adição da função que está sendo removida.
Stephen Harris
2
'after_setup_theme' parece ser um bom lugar para remover a ação. Veja: wordpress.stackexchange.com/questions/170663/…
DigitalDesignDj