Müssen wir unsere Child-function.php ändern, um Child-Dir-Dateien zu benötigen / einzuschließen, wenn wir eine übergeordnete Datei.php in das Child-Theme einfügen

Bei Child-Themen sollen wir die elter.php intact lassen und mit der child functions.php erweitern. Allerdings definiert parent functions.php normalerweise eine ganze Menge von include / requires, die sich auf Dateien im übergeordneten Verzeichnis beziehen.

Müssen wir daran denken, diese in unserer child function.php jedes Mal zu überschreiben, wenn wir eine child.php erstellen, die das Elternelement außer Kraft setzt? Oder findet WordPress den Override auf einer tieferen Ebene? Die child functions.php wird vor der elterlichen functions.php ausgeführt. Wenn sie benötigt wird, sollten niemals zwei Dateien gleichen Namens verknüpft werden, auch wenn sie sich in separaten Verzeichnissen befinden. Dann wird nur die untergeordnete Version ausgewählt. Sonst würden wir damit enden, sowohl das Kind als auch das Eltern-PHP zu verbinden und in ein richtiges Durcheinander zu geraten.

Solutions Collecting From Web of "Müssen wir unsere Child-function.php ändern, um Child-Dir-Dateien zu benötigen / einzuschließen, wenn wir eine übergeordnete Datei.php in das Child-Theme einfügen"

Ok, das erste, was ich überprüfen wollte, ist, dass Sie keine Änderungen an PHP durchführen, sondern einfach eines mit einem doppelten Namen im Child-Verzeichnis erstellen, das die übergeordnete Datei vollständig überschreibt?

Nein. Sie erstellen kein Thema mit demselben Namen. Sie erstellen ein Thema mit dem von Ihnen style.css Namen und stellen die entsprechende Kopfzeile in der Datei style.css , die auf das übergeordnete style.css .

 /* Theme Name: Twenty Fifteen Child Theme URI: http://example.com/twenty-fifteen-child/ Description: Twenty Fifteen Child Theme Author: John Doe Author URI: http://example.com Template: twentyfifteen Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready Text Domain: twenty-fifteen-child */ 

Die Zeile “Vorlage” ist diejenige, die auf das übergeordnete Element verweist:

  • Die Template-Zeile entspricht dem Verzeichnisnamen des übergeordneten Themes. Das übergeordnete Thema in unserem Beispiel ist das Thema “Twenty Fifteen”, also ist das Template “twentyfifteen”. Möglicherweise arbeiten Sie mit einem anderen Thema, passen Sie es entsprechend an.

https://codex.wordpress.org/Child_Themes#How_to_Create_a_Child_Theme

Nächster…

Das Master-Stylesheet bleibt im Parent, das Live-Stylesheet dagegen vom Child, das normalerweise das Parent-Stylesheet in die Kopfzeile des Child-CSS importiert.

Ja. Das Child-Stylesheet wird von WordPress Core für grundlegende Themendaten gelesen, muss jedoch in die Warteschlange eingereiht werden. Das übergeordnete Stylesheet wird nicht sein. Es schien ziemlich @import die Eltern zu @import und wenn ich mich recht erinnere, hat der Codex eine solche Methode vorgeschlagen. Ein CSS @import ist jedoch keine effiziente Möglichkeit, ein Stylesheet zu laden. Es führt zu Verzögerungen beim Laden der Seite, da beide Stylesheets nicht synchron geladen werden können. Ein besserer Weg ist das, was jetzt im Codex mit der Core- enqueue functionalität erscheint:

 function theme_enqueue_styles() { $parent_style = 'parent-style'; wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' ); wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ) ); } add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); 

Wie auch immer, zurück zu den Kinderthemen … die Hauptsache, die mir unklar ist, ist, dass wir die Elternfunktionen.php im Takt belassen sollen. Allerdings definiert parent functions.php typischerweise eine ganze Menge von include / requires, die sich auf Dateien im übergeordneten Verzeichnis beziehen.

Das ist richtig, und deshalb lassen Sie diese Datei (unter anderem) alleine.

Müssen Sie daran denken, diese in Ihrer Child function.php jedes Mal zu übersteuern, wenn Sie eine child.php erstellen?

Sie müssen nur die Dateien und den Code überschreiben, den Sie überschreiben müssen. Der Rest funktioniert weiterhin normal basierend auf dem übergeordneten Themencode. Das ist der Punkt der Eltern-Kind-Beziehung und deshalb ist diese Struktur so mächtig und flexibel. Sie können die Codebasis eines Themas nutzen, um den Aufwand für die Erstellung eines anderen Themas stark zu reduzieren.

Die child functions.php wird vor der übergeordneten functions.php ausgeführt, damit die Überschreibung funktioniert.

Hier muss man vorsichtig sein. Sie können nur Code außer Kraft setzen, der überschrieben werden soll. Meistens bedeutet dies, dass Dateien, die über get_template_part() und verwandte functionen, die kindgerecht sind, und functionen, die in if(!function_exists)'...')) Bedingungen eingeschlossen sind. Code-Include via PHP- *_once und include (oder die *_once Versionen) können nicht überschrieben werden. Ähnlich wie bei functionen können Sie nur functionen überschreiben, die in if(!function_exists('...')) pluggable.php wie Sie in der Datei Core pluggable.php . Wenn Sie versuchen, eine andere function zu überschreiben, indem Sie eine eigene mit dem gleichen Namen angeben, erhalten Sie einen fatalen PHP-Fehler. PHP erlaubt nicht mehrere functionen mit dem gleichen Namen.

Sie könnten auch an dieser Antwort interessiert sein.