it-swarm.com.de

PHP Dateien, die in functions.php enthalten sind, scheinen nicht zu funktionieren

Dies ist mein erster Beitrag auf WordPress StackExchange , ich werde versuchen, genau zu sein.

Meine Frage ist: Gibt es etwas spezielles, was ich an den Dateien tun sollte, die ich in die functions.php-Datei meines Themas einbinde?

Ich erstelle ein WordPress-Theme und meine functions.php Datei wird jetzt sehr groß. Ich habe es geschafft, eine Menge Code zu entfernen, indem ich einige Funktionen in Plugins verwandelt habe, aber es ist immer noch riesig.

Ich möchte den Code mit Includes organisieren können. Ich habe ein paar Dinge ausprobiert, aber es hat nicht funktioniert. Es ist, als würden die Dateien, die ich in meine functions.php-Datei aufgenommen habe, ignoriert.

// Configure the WordPress Customizer
require(get_template_directory_uri() . '/admin/customizer/customizer.php');

Der obige Code soll eine Datei aufrufen, die eine Funktion hinzufügt, die Abschnitte, Einstellungen und Steuerelemente im WordPress Customizer erstellt. Wenn die Funktion direkt in meiner functions.php-Datei platziert wird, funktioniert alles einwandfrei, aber wenn ich versuche, sie einzuschließen, geschieht nichts.

Die enthaltene Datei enthält auch enthält , ich weiß nicht, ob dies relevant ist.

Der obige Code ist eingebunden in after_setup_theme , wenn Sie der Meinung sind, dass ich etwas anders machen sollte, sagen Sie mir bitte, ich möchte es lernen.

1
donnie_g

Ich teile meine functions.php immer in verwaltbarere, spezifischere Funktionsdateien auf, zum Beispiel werden alle fußzeilenbezogenen Funktionen in eine Datei mit dem Namen footer-functions.php und Paginierungsfunktionen in eine Datei mit dem Namen pagination-functions.php geschrieben. Auf diese Weise bleibt mein Code organisiert, überschaubar und ich kann meinen functions.php nicht töten. Dies bezieht sich jedoch nur auf themenspezifische Funktionen. Site-spezifische Funktionen werden in Plugins auf die gleiche Art und Weise implementiert

Um auf den Punkt zurückzukommen, füge ich am Ende alle meine kleineren spezifischen Funktionsdateien wie folgt in functions.php mit require_once() ein

require_once( 'footer-functions.php' );
require_once( 'pagination-functions.php' );

Das ist alles was Sie brauchen. Sie sollten dies nicht mit einem Hook verknüpfen oder einer Funktion hinzufügen, da dies zu einem erwarteten Verhalten führen kann, das zu einer beschädigten Site führen kann

2
Pieter Goosen

Ihr Problem ist, dass Sie die Funktion get_template_directory_uri() für Ihren Include-Pfad verwendet haben. Wie durch den Funktionsnamen angegeben, gibt dies einen URI (keinen Pfad) zurück, der nicht zum Einfügen einer PHP-Datei in eine andere verwendet werden kann.

Geben Sie einfach den relativen Pfad der einzuschließenden Datei ein.

Z.B. Wenn Ihre Struktur ist:

/my-theme
 |--functions.php
 |--/lib
     |--customizer.php
     |--tools.php
 |--style.css
 ...etc

In deine functions.php einfach setzen

<?php

require_once('lib/customizer.php');
require_once('lib/tools.php');

Der Ansatz ist der gleiche, unabhängig davon, ob require(), require_once() oder include() verwendet wird.

1
harryg

Meiner Meinung nach kann Ihre Funktionsdatei so groß sein, wie Sie möchten, aber das Organisieren von Funktionen in Includes ist ein sehr logischer Prozess. Ich würde zuerst überprüfen, ob get_template_directory_uri () den richtigen Pfad zurückgibt. Sie können auch Dateien ohne den vollständigen Pfad in Ihr Thema einfügen, wenn sich/admin/in Ihrem Themenstamm befindet: require ('/ admin/customizer/customizer.php');

0
Innate