So überschreiben Sie vorhandene Plugin-Aktionen mit neuen Aktionen

18

Ich benutze ein Plugin. Es hat eine Aktion wie diese.

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

Ich schreibe ein Modul für dieses Plugin. Also muss ich diese alte Aktionsfunktion mit meiner neuen Aktionsfunktion überschreiben.

Das ist meine neue Funktion.

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

Ich möchte diese old_action-Funktion mit Hilfe von Hooks durch meine new_action-Funktion ersetzen. Kann mir jemand helfen?

Vielen Dank

Giri
quelle

Antworten:

33

Sie können die remove_action()Funktion folgendermaßen verwenden:

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

Es ist wichtig zu beachten, dass, wenn old_action mit einem Prioritätsparameter hinzugefügt wurde, Sie dies zum remove_actionAufruf hinzufügen müssen , da es sonst nicht möglich ist, ihn zu entfernen. Es gibt andere Implikationen, wenn old_action in einer Klasse hinzugefügt wurde. Sehen Sie hier für weitere Informationen.

Tomas Buteler
quelle
3
+1 mit der Klarstellung, dass die Aktion remove aufgerufen werden muss, nachdem die zu entfernende Funktion hinzugefügt wurde.
Stephen Harris
2
'after_setup_theme' scheint ein guter Ort für remove_action zu sein. Siehe: wordpress.stackexchange.com/questions/170663/…
DigitalDesignDj