Überschreiben alle Dateien im untergeordneten Thema das übergeordnete übergeordnete?
-
22-10-2019 - |
Frage
Ich bin gespannt, ob andere PHP -Codedateien neben functions.php, WP -Vorlagendateien und style.css in einem untergeordneten Thema dieselbe Datei in einem übergeordneten sie tatsächlich überschreiben?
Ich arbeite mit einem Kunden zusammen, der ein Thema mit Unterstützung bei Kindern hat. Es gibt jedoch keine Haken oder Aktionen für die Funktionen, die ich überschreiben möchte. Suchen Sie nach einer sauberen Möglichkeit, diesen Override -Codes -Code durchzuführen, der beim Upgrade nicht überschrieben wird.
Lösung
Es hängt ganz von a) ab, welche Funktionen und Vorlagendateien Sie sprechen, und b) wie diese Funktionen definiert werden, oder Vorlagendateien im übergeordneten Thema aufgerufen werden.
Wenn das übergeordnete Thema verwendet get_template_part()
, Dann bist du golden. Wenn das übergeordnete Thema verwendet get_stylesheet_directory_uri()
oder STYLESHEETPATH
, Dann können Sie mit Vorbehalten überschreiben. Wenn das übergeordnete Thema verwendet get_template_directory_uri()
oder TEMPLATEPATH
, Dann werden Sie eine schwierige Zeit haben.
Mit Funktionen, wenn das übergeordnete Thema die Funktionen in a einbackt function_exists()
Bedingt können Sie solche Funktionen einfach überschreiben, indem Sie sie im Kinderthema deklarieren. Mit Haken können Sie einfach remove_action
oder remove_filter
.
Andere Tipps
Normalerweise sind alle Dateien "überschreiben" -able (Aber nicht die Datei functions.php). Regel lautet: Zuerst lädt Kinderlasten, dann das übergeordnete Thema.
Wenn Sie eine Funktion in der Datei functions.php überschreiben möchten, sollte sie in eingewickelt werden
if ( ! function_exists('some_function_name') ) {
function some_function_name() { /* do stuff */ }
}
Sonst ist es nicht möglich.