Gibt es eine globale Art von functions.php-Datei, die für jedes Thema funktioniert?
Das Problem ist hier:
Wenn ich eine functions.php-Datei in einem Thema ändere, muss ich mich um zwei Änderungen kümmern: Erstens muss ich mich um die Aktualisierungen dieses Themas kümmern. Zweitens muss ich mich darum kümmern, das Thema der Site zu ändern.
Ist es also möglich, Änderungen an der Datei functions.php vorzunehmen, die unabhängig von einem Thema ist, anstatt Änderungen an der Datei functions.php eines Themas vorzunehmen?
Antworten:
Der Unterschied zwischen themenbezogenem und nicht themenbezogenem Code ist eher organisatorischer als technischer Natur. Jeder aktive Code trägt zur resultierenden Umgebung bei, unabhängig davon, woher er geladen wird.
Es gibt eine Reihe von Stellen, an denen Code geladen wird, die nicht Teil des WordPress-Kerns sind:
wp-config.php
KonfigurationsdateiEin typischer Ort für Ihren eigenen Code, der nicht Teil des Themas sein sollte, ist das Erstellen eines Plugins. Andere Ansätze profitieren nicht von generischen Groß- und Kleinschreibung, sondern von verfallener Benutzeroberfläche (Verwaltung über den Administratorbereich) und technischen (Aktivierungs- / Deaktivierungs- / Deinstallationsereignisse) Annehmlichkeiten eines normalen Plugins.
quelle
functions.php
, oder 2) Erstellen Sie ein benutzerdefiniertes Plugin, in dem diese Funktionen gespeichert werden, sodass es zwischen verschiedenen Themen portierbar ist.Template:
Tag entsprechend im untergeordneten Themastyle.css
.Nun, das ist ein echtes Problem, und viele Menschen sehen sich damit konfrontiert, wenn sie das Thema wechseln, aber es gibt einfache Lösungen.
Fügen Sie diese Funktion zu einer neuen Seite hinzu, nicht zu functions.php, und geben Sie ihr einen eindeutigen Namen, z. B. yousitename + timestamp oder was auch immer Sie möchten, aber einen eindeutigen Ordner mit demselben Namen erstellen, komprimieren und als Plugin hochladen, damit es sicher funktioniert, bis Sie es deaktivieren .
Um zu verstehen, welches Plugin für was ist, verpassen Sie nicht, diesem Plugin einen Namen zu geben, wie:
quelle
Als Ergänzung zu @MBTheDeveloper Antwort.
Andere Optionen wären:
include
in Ihrer Themes-Funktion die PHP-Datei und laden Sie eine custom-function.php-Datei, die Ihren benutzerdefinierten Code enthält.quelle
Nehmen Sie keine ortsspezifischen Änderungen in der Datei functions.php des Themas vor.
Erstellen Sie stattdessen ein ortsspezifisches Plugin. Ich verwende gerne den Domainnamen der Site wie "ottopress.com". Fügen Sie dann Ihre Snippets in dieses Plugin ein und lassen Sie es nur auf dieser Site aktiv.
Wenn Sie einen Ausschnitt verwandter Änderungen haben, erstellen Sie alternativ ein spezielles Plugin für nur diese. Dies gibt Ihnen die Möglichkeit, verwandte Codebits nach Bedarf ein- und auszuschalten.
quelle
Einige Erklärungen
Zuerst müssen Sie den Zweck von functions.php in einem Thema verstehen. Functions.php ist im Grunde nur eine Plugin-Datei ohne Namen, die, falls vorhanden, automatisch von Wordpress geladen wird. Wordpress lädt die function.php Ihres aktuellen Themas für WordPress-Front-End-Seiten und Back-End-Seiten (Admin).
Es gibt keinen Unterschied zwischen einem Plugin und functions.php, außer dass Plugins einen Namen haben und unabhängig von anderen Plugins und Themes aktiviert / deaktiviert werden können. Die funtions.php ist an Ihr aktuelles Thema angehängt. Wenn Sie zu einem anderen Thema wechseln, verwendet Wordpress die functions.php des neuen Themas und nicht Ihre alte functions.php mit benutzerdefinierten Änderungen.
Theme-Updates überschreiben auch functions.php und es gibt keine Möglichkeit, dies zu vermeiden. Selbst wenn Sie Ihre benutzerdefinierten Änderungen in separaten Codedateien ablegen und in Ihre fucntions.php aufnehmen, müssen Sie diese Include-Zeile nach jedem Update hinzufügen.
Im Allgemeinen die Art des Codes, der in functions.php enthalten sein sollte:
Da Sie Ihre benutzerdefinierten Änderungen beibehalten möchten, auch wenn Sie die Themen wechseln. Da das untergeordnete Thema in diesem Fall nicht funktioniert, werden Sie das Thema wechseln und die functions.php des untergeordneten Themas wird nicht verwendet.
Die Lösung
Die einzige von @Otto empfohlene Lösung besteht darin, eine Plugin-Datei zu erstellen. Der Ansatz, den Sie zum Erstellen Ihres ortsspezifischen Plugins verwenden können, besteht darin, einen Ordner mit Ihrem Site-Namen in 'wp-content / plugins' zu erstellen und darin Plugin-Dateien zu erstellen.
Warum Plugin-Dateien? und keine einzelne Plugin-Datei.
Gruppieren Sie die Funktionen der gruppenbezogenen Site in Bezug auf Code in separaten Plugin-Dateien. Vergessen Sie nicht, den Plugin-Header in alle Plugin-Dateien einzufügen, damit diese von Wordpress als separate Plugins erkannt werden. Sie haben dann die Möglichkeit, verschiedene Features / Funktionen Ihrer Site zu aktivieren / deaktivieren, ohne alles zu beschädigen.
quelle