In der gesamten Dokumentation, auf die ich gestoßen bin, wird das Überschreiben der steckbaren Funktion über Ihr Plugin beschrieben.
Was ist, wenn Sie stattdessen Themen entwickeln?
Meine functions.php erfordert eine andere Datei, die die get_user_by()
in definierte Funktion überschreibt pluggable.php
.
Wenn ich den if( function_exists() )
Anruf weglasse, wird der Fehler "Kann nicht neu deklarieren ..." angezeigt.
Wenn ich den if( function exists() )
Aufruf einbinde, erhalte ich keine Fehlermeldung, aber meine Funktion wird dann natürlich ignoriert, da die steckbare Version vorhanden ist.
Basierend auf Dominics großartigem Beitrag zur WordPress-Startreihenfolge ist klar, dass er vor dem Thema pluggable.php
geladen wird und so weiter, sodass der Fehler erklärt wird.functions.php
Die Frage ist also: Wie können Sie diese schöne steckbare Architektur innerhalb eines Themas nutzen, ohne Plugins schreiben zu müssen, die dann mit dem Theme gebündelt oder installiert werden müssen?
Weitere Hinweise : Es scheint also das Argument zu sein, dass Themen nicht versuchen sollten, das zu tun, was Plugins tun. Dieses Argument ist jedoch älter als vier Jahre (gemäß der 4-stelligen Trac-Nummer). Ich würde gerne von einigen Schlagern hören, ob diese Philosophie angesichts der komplexen Topologie der heutigen Themenentwicklungslandschaft immer noch gilt. Ich würde gerne glauben, dass wir uns seitdem weiterentwickelt haben.
Kontext : Ich entwickle eine einmalige CMS-Lösung für einen Kunden mit vielen benutzerdefinierten Metadaten, der Anpassung des Admin-Backends, dem Anmelde- / Authentifizierungsprozess und den Funktionen. Und natürlich gibt es die Designkomponente - hier kommt der Thementeil ins Spiel. Tatsache ist, dass dies einfach keine wiederverwendbaren Komponenten sind - sie werden niemals auf einen anderen Kunden angewendet, sie werden niemals unter GPL und Open Source gestellt und sie sind die meisten sicherlich nicht auf anderen WordPress-Bereitstellungen verteilt / installiert werden. Bestenfalls gibt es einige Best Practices, die ich für zukünftige Projekte nutzen werde, aber das ist ausschließlich ein Referenz- / Kopier-Einfüge-Job.
Dies klingt für mich nicht nach einem Anwendungsfall für Plugins. Das Thema ist installiert, möglicherweise ein untergeordnetes Thema von Twenty Eleven, möglicherweise ein eigenständiges Thema, dessen Funktionen.php eine Schiffsladung von Includes aufruft, die jeweils einen anderen Aspekt des betreffenden CMS behandeln. Anschließend verwenden die Designvorlagendateien benutzerdefinierte "Vorlagen-Tags", die in den Includes definiert sind. Ich möchte keine Themendateien mit Abhängigkeiten von einem Plugin oder einem anderen, das aktiviert wird usw. Es ist einfach nicht sinnvoll, Komplexität in das System einzubauen. Sicher, ich kann es in den Plugins-Ordner legen, der unbedingt verwendet werden muss, aber das fühlt sich immer noch wie ein Hack an - im Moment ist alles enthalten , was mit den für dieses Projekt vorgenommenen Anpassungen zu tun hat wp-content/themes/my-theme/
. Ich möchte auch nicht in Betracht ziehen müssen, in einigen Plugin-Ordnern nach Dingen zu suchen.
Versteh mich nicht falsch. Ich liebe Plugins und ich benutze sie und schreibe sie. Und ich verwende Plugins in Verbindung mit dieser Art von hochgradig angepasster Theme-Entwicklung, wenn das Plugin von Drittanbietern stammt und Best Practices darstellt, die weit über das hinausgehen, was ich möglicherweise in einem angemessenen Zeitrahmen einführen könnte. Wenn ich jedoch die Kernfunktionalität für ein einmaliges Szenario ändern muss, wende ich mich Action-Hooks und Filter-Hooks zu und möchte mich auch auf steckbare Funktionen für die Benutzer- und Authentifizierungsseite verlassen können.