it-swarm.com.de

Plugins in Themes einbinden

Ich konnte keinen Thread finden, der dies bespricht, also beginne diesen.

Momentan arbeite ich an einem ziemlich ausgeklügelten Thema für 3.1+ und damit meine ich, dass ich neben dem Styling und der regulären Front-End-Funktionalität Plugins im Kern des Themas einbinde, sowohl für das Back-End als auch für das Front-End . Um dies etwas besser zu organisieren, habe ich dies in drei Fragen unterteilt:

  1. Ist die Integration von Plugins eine gängige Praxis?
  2. Was sind die Auswirkungen/Komplikationen in Bezug auf die automatische Aktualisierung des Themas/der Plugins?
  3. Was wäre die optimalste Möglichkeit, um jedes Plugin einzubinden, ohne vorhandene Funktionen zu beeinträchtigen?
3
OleVik

1)Ist die Integration von Plugins eine gängige Praxis?

Nicht wirklich. Normalerweise haben Sie ein Thema, das eine Basisfunktionalität bietet. Sie erweitern das Thema dann nur mit Plugins für spezielle Zwecke wie Twitter-Inhalte, Veranstaltungskalender usw.

Imo macht es Sinn. Ich arbeite derzeit an einem extrem schlanken Thema, das einige Plugins (OOP-Ansatz) enthält, die als Plugins geliefert werden, aber nicht gebündelt sind. Diese Plugins bieten Template-Tags für Paginierung, Breadcrumbs, ... sogar die Schleife mit Post-Formaten. Mir gefällt die Idee, Funktionalität nur dann anzubieten, wenn der Benutzer es wirklich will. Zum Beispiel. Das Kommentarsystem wird selten benötigt, wenn Sie WP als CMS für eine Business-Homepage verwenden. Warum sollte das Thema dies anbieten? Ein weiterer Vorteil für diesen Ansatz: Sie deaktivieren einfach das Plugin und tauschen die Vorlagen-Tags mit benutzerdefinierten Elementen aus, wenn Sie sie nicht benötigen.

Wichtig bei diesem Ansatz ist: Platzieren Sie diese Vorlagen-Tags nicht direkt. Verwenden Sie Hooks und Filter, die in Funktionen eingebunden sind, damit Ihr Design nicht aufgrund undefinierter Funktionsaufrufe abstürzt, wenn Sie ein Plugin deaktiviert haben.

2)Was sind die Auswirkungen/Komplikationen in Bezug auf die automatische Aktualisierung des Themas/der Plugins?

Das ist etwas, was ich gerade selbst in Frage stelle. Ich habe über eine gewaltige Routine nachgedacht, die sowohl das Thema als auch die Plugins auf Updates überprüft, aber insgesamt: Es macht keinen Sinn. Imo ist es noch besser, wenn Sie nur das eingebaute Update-System verwenden (oder eine benutzerdefinierte Klasse verwenden, wenn Sie nicht am offiziellen Repo hosten). Warum: Sie aktualisieren nur das, was wirklich aktualisiert werden muss. Das spart Zeit und Energie und ich würde es sogar den "grüneren" Weg nennen.

3)Was wäre der optimierteste Weg, um jedes Plugin einzubinden, ohne die vorhandene Funktionalität zu beeinträchtigen?

Was genau ist in Ihrem Fall bereits vorhandene Funktionalität?

Funktionsnamen

WordPress hat rund 2.500 Funktionen, die auf Anfrage gelesen werden. if ( function_exists('whatever') ) zu hinterfragen ist also nie eine gute Idee. Verwenden Sie besser eindeutige Namen. @Jan Fabry hatte eine gute Idee: Er stellt allen seinen Antwortfunktionen hier wpse und die Nummer des Q-Beispiels voran: wpse14277_function_name(). Eine 4- oder 5-stellige Zahl in Kombination mit Buchstaben bleibt wahrscheinlich eindeutig. Stellen Sie sich vor, Sie haben 50 benutzerdefinierte Funktionen in Ihrem Thema und stellen diese gegen 2.500 pro Anforderung in Frage (Sie können die Berechnung selbst durchführen) - das ist nicht performant.
Bearbeiten:
Wenn Sie nur wissen möchten, ob ein Plugin aktiv ist, verwenden Sie das Tag is_plugin_active() conditional.

2
kaiser
  1. Ja, alles, was Sie in functions.php einbauen, kann technisch in ein Plugin umgewandelt und verteilt werden. Das Gleiche gilt auch in umgekehrter Reihenfolge.
  2. Sie müssen den Versionsaspekt etwas anders behandeln. Mit Plugins müssen Sie jedes Mal, wenn Sie Änderungen vornehmen, nur dieses Plugin aktualisieren. Bei einem Thema wird bei jeder kleinen Änderung das gesamte Thema aktualisiert. Dies ist eigentlich keine große Sache, es ist vielleicht sogar etwas praktischer, da WordPress Benutzer benachrichtigt, wenn ein Theme-Update verfügbar ist, genauso wie Plugins.
  3. Vergewissern Sie sich, dass Sie die Funktionen umbenennen, um sie eindeutig zu machen. Andernfalls kommt es zu Abstürzen, wenn Funktionen neu deklariert werden. Ich finde es am einfachsten, der Funktion den Namen Ihres Themas voranzustellen. Aus plugin_function () würde theme_plugin_function ().

Wenn Sie feststellen, dass Ihre functions.php etwas unübersichtlich wird, können Sie weitere .php-Dateien in Ihrem Theme erstellen, um die Organisation zu erleichtern, und diese Dateien in functions.php über include_once ('path/filename.php') aufrufen. .

1
Drew Gourley

Sprechen Sie, um ganz klar zu sein, über das Einschließen von Code, der bereits als eigenständige Plugins mit vollem Funktionsumfang vorhanden ist?

Ist die Integration von Plugins eine gängige Praxis?

Code generell in Themes zu integrieren, ist gängige Praxis. Die Bündelung übermäßiger Mengen an Code und Funktionalität, die normalerweise mit normalen Plugins realisiert wird, wird von manchen als "Feature Bloat" angesehen und versucht, Benutzer an Ihr Thema zu binden.

Was sind die Auswirkungen/Komplikationen in Bezug auf die automatische Aktualisierung des Themas/der Plugins?

Update überschreibt alles mit neuer Version.

Was wäre die optimalste Möglichkeit, um jedes Plugin einzubinden, ohne vorhandene Funktionen zu beeinträchtigen?

Dies hängt in hohem Maße davon ab, was das Plugin macht, wie es codiert ist und ob es für die Funktion Ihres Themes überhaupt erforderlich ist oder lediglich eine zusätzliche Funktionalität darstellt.

1
Rarst