Jak zastąpić istniejącą akcję wtyczki nową akcją

18

Używam wtyczki. Ma takie działanie.

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

Piszę moduł dla tej wtyczki. Więc muszę zastąpić tę starą funkcję akcji moją nową funkcją akcji.

To jest moja nowa funkcja.

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

Chcę zastąpić tę funkcję starej aktywności moją funkcją nowej aktywności za pomocą haczyków. Czy ktoś może mi pomóc?

Dzięki

Giri
źródło

Odpowiedzi:

33

Możesz użyć remove_action()funkcji w następujący sposób:

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

Ważne jest, aby pamiętać, że jeśli stara aktywność została dodana z parametrem priorytetowym, musisz dodać ją do remove_actionwywołania, w przeciwnym razie nie uda się jej usunąć. Istnieją inne implikacje, jeśli stara aktywność została dodana w klasie. Zobacz tutaj, aby uzyskać więcej informacji.

Tomas Buteler
źródło
3
+1 z wyjaśnieniem, że akcja usuwania musi zostać wywołana po dodaniu funkcji, którą usuwa.
Stephen Harris
2
„after_setup_theme” wydaje się być dobrym miejscem do usunięcia działań. Patrz: wordpress.stackexchange.com/questions/170663/…
DigitalDesignDj