web-dev-qa-db-fra.com

Où stocker PHP fichiers créés par plugin/themes

Il existe des cas dans lesquels un plugin ou un thème doit créer un fichier php quelque part qui puisse l’inclure ultérieurement. Par exemple, un plugin captcha, ou une sorte de système de gabarit comme twig/smarty (dans mon cas, c’est un simple moteur de gabarit pour une collection de widgets).

Où ce fichier devrait-il être créé?

Le seul endroit auquel je peux penser est wp-content/uploads/, mais ça ne sonne pas juste :)

Y a-t-il donc un endroit sûr où vous pouvez créer des fichiers et ne pas vous inquiéter de leur suppression sur WordPress/plugin/theme update?

Une solution pourrait être de créer un répertoire/thème enfant dans le répertoire themes/plugins ...

11
onetrickpony

L'emplacement approprié, à mon humble avis, serait un dossier personnalisé créé dans le répertoire wp-content. Lisez ceci avant de créer des fichiers: http://ottopress.com/2011/tutorial-using-the-wp_filesystem/

8
mfields

Vous ne pouvez pas compter sur un accès en écriture dans le répertoire du plugin ou du thème, de sorte que wp_upload_dir () est le seul répertoire possible.
Mais Je doute vraiment qu'il soit nécessaire de stocker les informations dans un nouveau fichier. Si le modèle est créé par l'utilisateur, stockez-le dans une option et analysez le contenu avec vos fonctions de plug-in habituelles (par exemple en remplaçant les espaces réservés par strtr()).

5
fuxia

En travaillant sur un plugin Wordpress, je suis tombé sur votre question. J'ai aussi d'abord pensé à créer des fichiers temporaires pour mettre en cache certaines données créées par mon plugin. Cependant, en y réfléchissant un peu plus, cette approche me semble étrange, car vous ne souhaitez pas que des données temporaires traînent sur un serveur si vous essayez de les faire évoluer à l'aide d'un cluster de serveurs.

J'ai donc cherché à nouveau et il semble que la solution valable pour de tels problèmes soit le Wordpress Transients API vous permettant de stocker des données dans la base de données avec une date d'expiration. Bien entendu, votre problème peut toujours nécessiter des fichiers mis en cache localement, par exemple. si elles sont trop volumineuses pour la base de données, mais au moins je suggère de jeter un coup d'œil à cette option aussi :-)

5
Sebi

Je ne peux penser qu'à quelques bonnes raisons pour qu'un plugin ait besoin de créer un fichier. L'une consiste à sauvegarder les options compliquées que l'utilisateur peut exporter et télécharger pour passer à un nouveau site. L'autre est un plugin sitemap.

Si votre plug-in contient des fichiers de modèle que l'utilisateur peut personnaliser, vous devez lui donner la possibilité de déplacer le fichier personnalisé dans le répertoire du thème en cours pour éviter que les modifications apportées à votre plug-in ne soient remplacées. Vous pouvez d'abord essayer de charger les fichiers à partir du répertoire theme, puis revenir à votre répertoire plugin.

Gravity Forms stocke les fichiers de formulaires téléchargés dans son propre dossier, à l’intérieur des téléchargements. W3 Total Cache utilise wp-content, la redirection de connexion utilise la méthode décrite ci-dessus.

3
Chris_O

Je suggère toujours un chargeur automatique compatible PSR-0 et un dossier de bibliothèque qui fonctionne.

Certains WP utilisateurs pourraient vous filmer à ce moment-là, mais vous n'êtes peut-être pas concentré sur ces utilisateurs, ce qui peut être une option. Surtout si vous avez de plus en plus de bibliothèques spécifiques à un fournisseur.

1
hakre

Si vous devez créer des fichiers (tels que des fichiers temporaires pour un plugin CAPTCHA), vous devez absolument utiliser \wp-content\uploads\ (ou un répertoire personnalisé tel que \wp-content\plugin-slug-files\).

La plupart des autres codes personnalisés doivent être réellement stockés dans la base de données.

1
Chip Bennett