wake-up-neo.com

Wo lagern? PHP Dateien erstellt von Plugin/Themes

Es gibt Fälle, in denen ein Plugin oder Theme irgendwo eine PHP-Datei erstellen muss, die diese später enthalten kann. Zum Beispiel ein Captcha-Plugin oder eine Art Template-System wie twig/smarty (in meiner Situation ist es eine einfache Template-Engine für eine Sammlung von Widgets).

Wo soll diese Datei erstellt werden?

Der einzige Ort, an den ich denken kann, ist wp-content/uploads/, aber das klingt einfach nicht richtig :)

Gibt es also einen sicheren Ort, an dem Sie Dateien erstellen können und sich nicht darum sorgen müssen, dass diese in WordPress/plugin/theme update gelöscht werden?

Eine Lösung könnte darin bestehen, ein untergeordnetes Thema/Verzeichnis im Verzeichnis themes/plugins zu erstellen ...

11
onetrickpony

Der geeignete Ort, IMHO, wäre ein benutzerdefinierter Ordner, den Sie im Verzeichnis wp-content erstellen. Lesen Sie dies, bevor Sie Dateien erstellen: http://ottopress.com/2011/tutorial-using-the-wp_filesystem/

8
mfields

Sie können sich nicht auf den Schreibzugriff auf das Plugin- oder Designverzeichnis verlassen, daher ist wp_upload_dir () das einzig mögliche Verzeichnis.
Aber Ich bezweifle wirklich, dass die Informationen in einer neuen Datei gespeichert werden müssen. Wenn die Vorlage vom Benutzer erstellt wurde, speichern Sie sie in einer Option und analysieren Sie den Inhalt mit Ihren regulären Plug-in-Funktionen (z. B. indem Sie Platzhalter durch strtr() ersetzen).

5
fuxia

Bei der Arbeit an einem Wordpress-Plugin bin ich auf Ihre Frage gestoßen. Ich dachte auch zuerst darüber nach, temporäre Dateien zu erstellen, um einige Daten zwischenzuspeichern, die mein Plugin erstellt hat. Allerdings erscheint mir dieser Ansatz etwas nachdenklicher, da Sie keine temporären Daten auf einem Server haben möchten, wenn Sie versuchen, sie mithilfe eines Serverclusters zu skalieren.

Also habe ich erneut gesucht und es scheint, als ob eine gültige Lösung für solche Probleme die Wordpress Transients API ist, mit der Sie Daten mit einem Ablaufdatum in der Datenbank speichern können. Natürlich kann Ihr Problem weiterhin lokal zwischengespeicherte Dateien erfordern, z. wenn sie zu groß für die Datenbank sind, aber ich schlage zumindest vor, auch diese Option zu prüfen :-)

5
Sebi

Ich kann mir nur ein paar gute Gründe vorstellen, warum ein Plugin eine Datei erstellen müsste. Eine besteht darin, komplizierte Optionen zu sichern, die der Benutzer exportieren und herunterladen kann, um sie auf eine neue Site zu verschieben. Das andere ist ein Sitemap-Plugin.

Wenn Ihr Plugin Vorlagendateien enthält, die der Benutzer anpassen kann, sollten Sie dem Benutzer die Option geben, die angepasste Datei in das aktuelle Designverzeichnis zu verschieben, damit sie beim Aktualisieren des Plugins nicht überschrieben werden. Sie können versuchen, die Dateien zuerst aus dem Theme-Verzeichnis zu laden und dann in Ihr Plugin-Verzeichnis zurückzukehren.

Gravity Forms speichert hochgeladene Formulardateien in einem eigenen Ordner innerhalb der Uploads. W3 Total Cache benutzt wp-content, Login Redirect benutzt die oben beschriebene Methode.

3
Chris_O

Ich empfehle immer einen PSR-0-kompatiblen Autoloader und einen Bibliotheksordner, der einfach funktioniert.

Einige WP Benutzer könnten Sie dann erschießen, aber vielleicht sind Sie nicht auf diese Benutzer konzentriert, daher kann dies eine Option sein. Vor allem, wenn Sie immer mehr herstellerspezifische Bibliotheken erhalten.

1
hakre

Wenn Sie Dateien erstellen müssen (z. B. temporäre Dateien für ein CAPTCHA-Plugin), sollten Sie unbedingt \wp-content\uploads\ (oder ein benutzerdefiniertes Verzeichnis wie \wp-content\plugin-slug-files\) verwenden.

Die meisten anderen benutzerdefinierten Codes sollten wirklich in der Datenbank gespeichert werden.

1
Chip Bennett