wie man ein untergeordnetes Thema ersetzt, um functionen in verschiedenen PHP-Dateien zu ersetzen, die durch require_once geladen werden

Ich arbeite an einem Kind-Thema für die Vorlage “Nachrichten”.

Mein Problem ist, dass es im übergeordneten Thema einige functionen gibt, die in verschiedenen PHP-Dateien definiert sind. Diese Dateien werden in functions.php mit require_once aufgerufen.

Ich denke, ich verstehe, wie functionen entladen werden und meine eigenen functionen definieren, aber wie zeige ich den Request_once-Aufruf auf meine neue Datei im Child-Theme-Pfad?

Prost,

Troy

Solutions Collecting From Web of "wie man ein untergeordnetes Thema ersetzt, um functionen in verschiedenen PHP-Dateien zu ersetzen, die durch require_once geladen werden"

Die functions.php-Datei in untergeordneten Designs wird vor der functions.php des übergeordneten Themes ausgeführt. Es gibt ein paar mehr Details im Codex .

Wenn das übergeordnete Thema Entwicklungsstandards folgt, sollte jede ihrer benutzerdefinierten functionen wie folgt funktionieren:

if( !function_exists( 'a_parent_theme_function' ) ) { function a_parent_theme_function() { \\ do stuff } } 

Dann schreiben Sie einfach Ihre eigene a_parent_theme_function() und sie hat Vorrang, weil sie zuerst definiert wird. Allerdings würde ich sagen, dass eine Mehrheit von Themen mit wenig Rücksicht auf Eltern-Theming gebaut wird, und so können Sie die Elternfunktion nicht überschreiben, was ein großes Problem ist.

Wenn Sie ein Framework mit eigenen Hooks verwenden, können Sie möglicherweise die Aktion remove wie diese Person verwenden , um die functionalität rückgängig zu machen, die Sie nicht möchten, und sich an anderer Stelle einfügen, um hinzuzufügen, was Sie wollen, aber das fühlt sich falsch an. Vielleicht könnten Sie sogar in den gleichen Hook mit einer niedrigeren Priorität einhaken, das Ergebnis der function rückgängig machen und wiederholen, was Sie wollen. Aber auch das ist sicherlich nicht ideal.

Diese Frage ähnelt der vorherigen Frage zu stackoverflow, die nichts Gutes verheißt . PHP bietet keine einfache Möglichkeit, eine vorhandene function zu überladen oder zu überschreiben, ohne etwas wie die oben erwähnte Überprüfung von function_exists() .

Denken Sie an die require_once wie eine Methode, um Ihre functionen zu organisieren. Am Ende befindet sich alles in functions.php. Mit anderen Worten, Sie können nur die functionen.php durch Ihre gewünschten functionen ersetzen. Wenn Sie Dateien von Ihrem übergeordneten Thema laden möchten, tun Sie es einfach

 require_once( get_bloginfo('template_directory').'includes_folder/something.php'); 

Ich hoffe es hilft