Dove archiviare i file PHP creati da plugin / temi


12

Ci sono casi in cui un plugin o un tema deve creare un file php da qualche parte che può successivamente includerlo. Ad esempio un plug-in captcha o una sorta di sistema di template come twig / smarty (nella mia situazione è un semplice motore di template per una raccolta di widget).

Dove dovrebbe essere creato questo file?

L'unico posto a cui riesco a pensare è wp-content/uploads/, ma non suona proprio bene :)

Quindi c'è un posto sicuro in cui puoi creare file e non preoccuparti che vengano eliminati con WordPress / plugin / aggiornamento tema?

Una soluzione potrebbe essere quella di creare un tema / directory figlio nella directory temi / plugin ...

Risposte:



5

Non puoi fare affidamento sull'accesso in scrittura nella directory dei plugin o dei temi, quindi wp_upload_dir () è l'unica directory possibile.
Ma dubito davvero che sia necessario archiviare le informazioni in un nuovo file. Se il modello viene creato dall'utente, archiviarlo in un'opzione e analizzare il contenuto con le normali funzioni del plug-in (ad esempio sostituendo i segnaposto con strtr()).


sì, va bene per sostituire le variabili (adesso ho qualcosa del genere). Ma se vuoi anche consentire all'utente di utilizzare tag condizionali come IF o eseguire il loop di un oggetto, devi scrivere il codice php ...
onetrickpony

5

Mentre lavoravo su un plugin Wordpress, mi sono imbattuto nella tua domanda. Ho anche pensato di creare file temporanei per memorizzare nella cache alcuni dati creati dal mio plugin. Tuttavia, dandogli un po 'più di pensiero, questo approccio mi sembra strano perché non vuoi avere dati temporanei in giro su un server se stai cercando di ridimensionarlo utilizzando un cluster di server.

Quindi ho cercato di nuovo e sembra che la soluzione valida per tali problemi sia l' API Transitori di Wordpress che consente di archiviare i dati nel database con una data di scadenza. Ovviamente il tuo problema potrebbe richiedere ancora file memorizzati nella cache locale, ad esempio se sono troppo grandi per il database, ma almeno suggerisco di dare un'occhiata anche a questa opzione :-)


3

Posso solo pensare ad alcune buone ragioni per cui un plugin avrebbe bisogno di creare un file. Uno è il backup di opzioni complicate che l'utente può esportare e scaricare per passare a un nuovo sito. L'altro è un plug-in Sitemap.

Se il tuo plugin ha file modello che l'utente può personalizzare, dovresti dare all'utente la possibilità di spostare il file personalizzato nella directory del tema corrente in modo che quando il tuo plugin si aggiorna non verranno sovrascritti. Puoi provare a caricare prima i file dalla directory dei temi, quindi tornare alla directory dei plug-in.

Gravity Forms archivia i file caricati nella propria cartella all'interno dei caricamenti. W3 Total Cache utilizza wp-content, il reindirizzamento dell'accesso utilizza il metodo sopra descritto.


1

Se devi creare file (come file temporanei per un plugin CAPTCHA), dovresti assolutamente usare \wp-content\uploads\(o una directory personalizzata come \wp-content\plugin-slug-files\).

La maggior parte degli altri codici personalizzati dovrebbe essere realmente archiviata nel database.


1
e eval()vero? in nessun modo ...
onetrickpony,

Di cosa hai bisogno eval()?
Chip Bennett,

pensa alla smarty per esempio. Supponiamo che tu crei un widget e desideri che l'utente abbia la possibilità di personalizzare l'output come desidera. Quindi aggiungi un'area di testo nelle opzioni del widget in cui l'utente può scrivere il proprio modello smarty per quel widget. Questo modello deve essere compilato e il modo migliore per farlo è generare un file PHP e includerlo nel widget.
onetrickpony,

Sembra un considerevole tratto dell'uso previsto delle opzioni Widget / Widget ...
Chip Bennett

1
Certamente no. Ma IMHO se l'utente ha bisogno di tanta flessibilità nella creazione di Widget personalizzati, allora l'utente dovrebbe scrivere un Plugin personalizzato o aggiungere un codice Widget personalizzato al file Functions.php del suo tema. Perché un plugin, che crea widget, che consente agli utenti di creare altri widget?
Chip Bennett,

1

Suggerisco sempre un caricatore automatico compatibile PSR-0 e una cartella di libreria che funzioni.

Alcuni utenti WP potrebbero spararti allora, ma forse non sei concentrato su questi utenti, quindi questa può essere un'opzione. Soprattutto se ottieni sempre più librerie specifiche del fornitore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.