18 Stimmen

Wie kann ich die Aktionspriorität in Wordpress ändern?

Ich verwende das Thematic-Framework für ein Child-Theme. Es hat eine Reihe von Hooks, aber ich betrachte insbesondere thematic_header(). Der thematic_header() Hook fügt die folgenden Aktionen hinzu (durch add_action):

Der Inhalt der Aktionen ist irrelevant.

Meine Frage lautet: Wie kann ich die Prioritäten der fünf genannten Aktionen ändern? Ich möchte zum Beispiel, dass thematic_access() vor thematic_brandingopen() geladen wird. Der einzige Weg, den ich herausgefunden habe, dies zu tun, ist das Entfernen und erneute Hinzufügen der Aktionen, z. B.:

`

Das scheint ein dummer Weg zu sein, um etwas sehr Einfaches zu erreichen. Gibt es eine Möglichkeit, auf die zu zugreifen und die Datenstruktur zu sortieren/neu anzuordnen, in der die Aktionen in WP gespeichert sind?

`

11voto

The Alpha Punkte 137600

Von WordPress

wenn ein Hook mit einer Priorität registriert wurde, die nicht der Standardpriorität von 10 entspricht, dann musst du auch die Priorität im Aufruf von remove_action() angeben.

Also denke ich, du kannst es zuerst entfernen mit folgendem

remove_action('thematic_header', 'thematic_brandingopen', 1);
remove_action('thematic_header', 'thematic_access', 9);

und dann wieder hinzufügen mit einer anderen Priorität

add_action('thematic_header', 'thematic_access', 1);
add_action('thematic_header', 'thematic_brandingopen', 2);

6voto

Um nicht Eigenwerbung zu machen, aber ich habe an diesem Projekt gearbeitet, um eine nicht-codierende Lösung durch ein WordPress-Plugin namens Prioritize Hooks bereitzustellen. Mein Plugin ermöglicht es Ihnen, die Prioritäten verschiedener registrierter Hooks über eine Benutzeroberfläche festzulegen und führt das Überschreiben zur Laufzeit durch, sodass der Code nicht geändert wird.

3voto

lukenofurther Punkte 543

Nur für den Fall, dass es jemandem hilft, die Variable, in der die Aktionen gespeichert sind, lautet

global $wp_filter;
var_dump( $wp_filter[$hook_name] );

Dies ist ein Array von Arrays, bei dem die Schlüssel die Priorität sind, als die Aktion hinzugefügt wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X