こんにちは私はこれまでの画像のユーザーが私のプラグイン内の指定されたフォルダに入れて私がそれをプラグインでそれを使用できるようにフォルダ内のすべての画像を選択しようとしました。
私はフォルダ内の画像やファイルを選ぶために次のphp関数を試してみました
glob
scandir
私はWordPressの領域以外の私のローカルサーバーでしようとすると私はエラーThe system cannot find the file specified.
を取得しているwordpressのフレームワークで上記を試してみると、それは指定されたフォルダ内のファイルを選んでいます。
<?php
foreach(glob('../images/*.png') as $filename){
echo $filename;
}?>
スキャン方法
<?php
foreach(scandir('../images/') as $filename){
echo $filename;
}?>
上記のWordPressフレームワークの外でうまく動作する
同じことを私は私のプラグインフォルダ内の私のプラグインのためにWordPressで試してみたが、私はタスクを達成することはできません。これは働いていません。
試み1
<?php
foreach(glob('../images/*.png') as $filename){
echo $filename;
}?>
私は何もエラーも警告も出力もしませんでした。
試み2
<?php
foreach(scandir('../images/') as $filename){
echo $filename;
}?>
私は警告Warning: scandir(../images/,../images/): The system cannot find the file specified. (code: 2)
を得ました
Warning: scandir(../images/): failed to open dir: No such file or directory
これを試しているファイルは、別のフォルダーにありますが同じディレクトリーにあります。
例えば
このコードのPhpファイルはinc
フォルダinc/settings.php
にあります
見ている画像はimages
フォルダにあります
両方のフォルダは私のプラグインフォルダの中にあります
- myplugin
myplugin.php
/images
/inc
/documentaion
さて、私のimagesフォルダにあるすべてのimagesの名前をどうやって取得するのですか?
注:include('inc/settings.php');
のように私のメインファイルに他のphpファイルを含めるのに使います
これらはうまく機能するので、パスの指定に問題がない可能性が最も高いです。scandir
またはglob
関数の使用に問題がある可能性があります。誰かが私を助けてくれる?
私が単に以下を使うとき
foreach(glob('images/*.png') as $filename){
echo $filename;
}
?>
wp-admin/images
フォルダから画像を取得するというアイデアはありますか?
scandir
とglob
はディレクトリのことに関連しているので、urlを返しますがdirectoryを返さないplugins_url()
の代わりにWP_PLUGIN_DIR
を試してみてください。
以下の両方の機能が便利です
WP_PLUGIN_DIR
plugin_dir_path( __FILE__ )
上記の機能を試してみました。
あなただけを使用する場合は覚えておいてください
<?php
foreach (glob('images/*.png') as $filename) {
echo $filename;
}
?>
ルートディレクトリかもしれないwp-admin/images
から画像を取得します。よくわかりません。
ここで何か問題があると思われる場合はコメントしてください:)
この答えは質問の 最初のバージョン に関連しています、そして私はそれを更新する方法がわかりません、私はそれを残します一般的な参照としてここに。
これにはプラグインフォルダ(またはテーマ)を使用しないでください。たぶんあなたのプラグインはアップグレード機能を持たず、何も上書きされないでしょう。しかしベストプラクティスは、/wp-content
ルートまたは内のフォルダーを/wp-content/uploads
内に使用することです。
/wp-content/my-images
内:
$test = glob( WP_CONTENT_DIR . '/my-images/*.png');
/wp-content/uploads/my-images
内:
$up_dir = wp_upload_dir();
$test = glob( $up_dir['basedir'] . '/images/*.png');