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="">';
}
?>