プラグイン/テーマによって作成されたPHPファイルを保存する場所


12

プラグインまたはテーマは、後でそれを含めることができるphpファイルを作成する必要がある場合があります。たとえば、captchaプラグイン、またはtwig / smartyなどのテンプレートシステム(私の場合、ウィジェットのコレクション用の単純なテンプレートエンジンです)。

このファイルはどこに作成する必要がありますか?

私が考えることができる唯一の場所はですがwp-content/uploads/、それはちょうど正しく聞こえません:)

ファイルを作成できる安全な場所はありますか?WordPress /プラグイン/テーマの更新時にファイルが削除される心配はありませんか?

1つの解決策は、themes / pluginsディレクトリに子テーマ/ディレクトリを作成することです...

回答:



5

プラグインまたはテーマディレクトリの書き込みアクセスに依存することはできないため、可能なディレクトリはwp_upload_dir()のみです。
しかし、私は情報を新しいファイルに保存する必要があることを本当に疑っています。テンプレートがユーザーによって作成された場合、それをオプションに保存し、通常のプラグイン関数でコンテンツを解析します(プレースホルダーをで置き換えるなどstrtr())。


はい、それは変数を置き換えるのに適しています(私は今そのようなものを持っています)。しかし、ユーザーがIFなどの
コンディショナル

5

Wordpressプラグインの作業中に、私はあなたの質問を偶然見つけました。最初に、プラグインが作成していたデータをキャッシュする一時ファイルを作成することも考えました。ただし、少し考えてみると、サーバーのクラスターを使用してデータをスケーリングしようとする場合に、1つのサーバー上に一時データを置きたくないので、このアプローチは奇妙に思えます。

だから私はもう一度検索しましたが、そのような問題の有効な解決策は有効期限のあるデータベースにデータを保存できるWordpress Transients APIです。もちろん、問題がローカルにキャッシュされたファイルを必要とする場合もあります。たとえば、ファイルがデータベースに対して大きすぎる場合などですが、少なくともこのオプションも検討することをお勧めします:-)


3

プラグインがファイルを作成するのに必要ないくつかの正当な理由しか考えられません。1つは、ユーザーがエクスポートおよびダウンロードして新しいサイトに移動できる複雑なオプションをバックアップすることです。もう1つはサイトマッププラグインです。

プラグインにユーザーがカスタマイズできるテンプレートファイルがある場合は、プラグインが更新されても上書きされないように、カスタマイズしたファイルを現在のテーマディレクトリに移動するオプションをユーザーに提供する必要があります。最初にテーマディレクトリからファイルをロードしてから、プラグインディレクトリにフォールバックできます。

Gravity Formsは、アップロードされたファイルをアップロード内の独自のフォルダーに保存します。W3 Total Cacheはwp-contentを使用し、ログインリダイレクトは上記で説明した方法を使用します。


1

ファイル(CAPTCHAプラグインの一時ファイルなど)を作成する必要がある場合は、必ず\wp-content\uploads\(またはなどのカスタムディレクトリ\wp-content\plugin-slug-files\)を使用する必要があります。

他のほとんどのカスタムコードは、実際にはデータベースに格納する必要があります。


1
そしてeval()それ?
まさか

何が必要eval()ですか?
チップベネット、

たとえば、smartyについて考えます。ウィジェットを作成し、ユーザーが必要に応じて出力をカスタマイズできるようにするとします。したがって、ユーザーがウィジェット用に独自のスマーティー風のテンプレートを作成できるウィジェットオプションにテキストエリアを追加します。そのテンプレートをコンパイルする必要があります。そのための最良の方法は、PHPファイルを生成してウィジェット内に含めることです。
onetrickpony

これは、ウィジェット/ウィジェットオプションの使用目的のかなりの範囲のように聞こえます...
チップベネット

1
確かに違います。しかし、ユーザーがカスタムウィジェットの作成にそれほど多くの柔軟性を必要とする場合、ユーザーはカスタムプラグインを作成するか、カスタムウィジェットコードをテーマのfunctions.phpファイルに追加する必要があります。ユーザーが他のウィジェットを作成できるようにするウィジェットを作成するプラグインがあるのはなぜですか?
チップベネット

1

私は常にPSR-0互換のオートローダーとちょうど動作するライブラリフォルダーをお勧めします。

その場合、一部のWPユーザーはあなたを撃つ可能性がありますが、おそらくこれらのユーザーに集中していないため、これはオプションになる可能性があります。特に、ベンダー固有のライブラリをどんどん入手する場合は。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.