web-dev-qa-db-ja.com

アップロードでディレクトリを作成する - wp_mkdir_p()またはWP_Filesystem?

私はこれまでWPにフォルダ/ファイルを作成する必要は実際にはなかったと思いますが、プラグインの場合はwp-content/uploadsにcache(サイズ変更された画像用)フォルダが必要です。

これは、疑問を投げかける - Filesystem API (必要に応じてFTP資格情報を煩わしく尋ねることを含む)ですべてのプロセスを実際に通過する必要があるか、または wp_mkdir_p() で十分ですか?

9
Rarst

wp-content/uploads/はサーバーに書き込み可能であるべきです(そうでなければファイルをアップロードすることは不可能でしょう、いいえ?)。このディレクトリの下に何かを作成するつもりなら、wp_mkdir_p()を使っても安全です。

WP_Filesystemのように、サーバーがその場所への書き込み権限を持っていない可能性がある場合にのみ、wp-content/plugins/を使用します(少なくとも、その必要はないと思います)。 。

サイドノート: CodexのFile Permissionsページwp-content/cache/ディレクトリについても話しています。これはキャッシュファイルの「より標準的な」場所でしょうか。

7
Jan Fabry

無限の可能性/ホスティング設定をいじる前に、私は簡単なことを試してみます:

$target = 'wherever';
wp_mkdir_p( $target );

if ( wp_mkdir_p( $target ) === TRUE )
{
    echo "Folder $target successfully created";
}
else
{
    new WP_Error; #... etc. Just tell where the user has to make a new folder with the name xy
    // or if you're kool, you use _doing_it_wrong(); ... ;-)
}
6
kaiser

あなたのプラグインにファイル/フォルダを作成させることだけに向かいます:私のプラグインもそれをしました、そして、私は異なるユーザのためのファイル許可に関するたくさんの問題に出くわしました。いくつかはwindows、いくつかはunix、いくつかはホストされている、そしていくつかは自家製です。私がプラグインを共有したら、それは私の#1サポートEメールでした。

私はファイルシステムに触れる必要性を最小限にするために私のコードをリファクタリングしました、そしてアップロードディレクトリはそのような問題を避けるために私が今使うものだけです。

4
user6479