WordPress のフォルダにあるファイルの一覧を取得して、画像ファイルであれば出力して表示する方法のメモ。
ファイルの一覧を取得して出力するには以下のようにする。
この時、URL からサーバー内部のファイル一覧を取得することはできないので「get_template_directory()」を使用する。( http:// で始まる URL ではなくディレクトリのパス)
「get_template_directory_uri()」や「get_bloginfo(‘template_url’)」ではNG。
<?php $dirName = get_template_directory(). '/images/top_photo/'; if ($dir = opendir($dirName)) { while (($file = readdir($dir)) !== false) { if ($file != "." && $file != "..") { echo $file; } } closedir($dir); } ?>
または、以下のようにしても同じような結果が得られる。
<?php $dirName = get_template_directory(). '/images/top_photo/'; $dir = dir($dirName); while(FALSE !== ($fileName = $dir->read())){ if ($fileName != "." && $fileName != "..") { echo $fileName; } } ?>
上記の場合、そのフォルダ内にフォルダがあればそのフォルダ名も取得される。
<?php $dirName = get_template_directory(). '/images/top_photo/'; $dir = dir($dirName); while(FALSE !== ($fileName = $dir->read())){ $path = $dir->path. '/' .$fileName; if(@getimagesize($path)){ $imageFileNames[] = $fileName; } } sort($imageFileNames, SORT_STRING) ; foreach ( $imageFileNames as $imageFileName ){ $src = get_template_directory_uri(). '/images/top_photo/' .$imageFileName ; echo '<img src="'.$src. '" width="680" height="420" alt="">'; } ?>