get_header und hook vermeiden normalen Anruf

Ich möchte einen benutzerdefinierten Header verwenden, wie get_header('new')

Aber ich kann die Vorlagen nicht leicht ändern, wo die Anrufe aus verschiedenen Gründen erfolgen. (viele Dateien und dieselbe Codebasis, die auf mehreren verschiedenen Domains bereitgestellt wird, wo einige Domains den neuen Header nicht laden dürfen und dieselben Templates verwenden, also möchte ich den neuen Header an einer Stelle mit einer Domain-basierten Bedingung laden)

Gibt es eine Möglichkeit, wie ich einen Haken machen und die Header-function mit dem Parameter selbst aufrufen kann, aber dann nicht den üblichen Standard-Anruf aufrufen?

 function new_get_header(){ get_header('new'); //die or something } add_action('get_header', 'new_get_header'); 

Irgendwelche Tipps geschätzt.

Solutions Collecting From Web of "get_header und hook vermeiden normalen Anruf"

Nein, das geht leider nicht, weil get_header( $name ) keinen Filter für den $name (er übergibt nur den Namen mit dem Aktionsaufruf).

Wenn Sie jedoch bereit sind, die Datei ” header.php ” für jede Site so zu ändern, am Anfang der Datei:

 < ?php if ( apply_filters( 'load_custom_header', false ) ) { $custom_header = apply_filters( 'get_custom_header', '' ); if ( '' != $custom_header ) { // Get the header that we just received // and call the native 'get_header' function // as usual get_header( $custom_header ); // By calling 'return' we are skipping // parsing this template any further return; } } 

Sie können dann steuern, welcher Header wie folgt geladen werden soll (Sie können diesen Code entweder in ein Plugin oder in die Datei functions.php einfügen):

 // We are hooking to the 'load_custom_header' filter // and return a value of 'true' meaning that we want to // load a custom header add_filter( 'load_custom_header', '__return_true', 99 ); add_filter( 'get_custom_header', function( $header ) { // Figure out what header you want $some_condition = true; if ( $some_condition ) { $header = 'new'; } return $header; }, 99 ); 

Der offensichtliche Vorteil ist, dass Sie nicht alle get_header Aufrufe von allen Vorlagen single.php page.php : single.php , page.php usw. Sie steuern alle von ihnen an einem einzigen Ort.