2015-09-09 2 views
2

Я не знаю, как это сделать, не слишком завываясь с описанием, поэтому я стараюсь быть как можно короче, не оставляя важные биты. Ранее я рассматривал решение командной строки для этого, но не смог найти его. Поэтому подумайте о PHP-решении.Использование PHP для поиска имен каталогов

настоящее время у меня тонны изображений всех сохраненных в различных папках в следующем макете:

locationname/hotelname/image.jpg 
locationname/businessname/hotelname/image.jpg 
locationname/businessname/hotelname/image.jpg 
locationname/operatorname/hotelname/image.jpg 

Очевидно, что общий знаменатель здесь является то, что каталоги всегда заканчиваются названием отеля, к счастью, название отеля является то же имя, что и заголовок Wordpress, который относится к изображениям.

Вместо того, чтобы пытаться переставить все папки $ hotelname в один и тот же каталог, могу ли я подумать, что я могу сканировать каталоги для самого низкого каталога, откуда я могу загрузить исходные изображения. Немного похоже на петлю foreach с изображением, полученным следующим образом:

<img src="$calculatedurl/image.jpg"/> 

Заранее спасибо.

Редактировать: Чего я хочу достичь.

Каждое сообщение имеет заголовок сообщения, а заголовок в значительной степени на 100% совпадает с именем папки в каталоге загрузок, содержащей его изображения. Так, в отеле под названием «Agrade Apartments», изображения сохраняются в:

wp-content/uploads/locationame/Agrade Apartments/image.jpg 

Есть более чем 1000 квартир, так, а не пытаться пройти через каждый пост и добавьте изображения вручную, я хочу написать условный оператор, который будет проверять, имеет ли изображение вложения, если он показывает, показывает ли прикрепленные изображения, если он этого не делает, затем получите $ posttitle и сканирует каталоги uploads для папки с тем же именем, получите содержимое и foreach $ content as $ content добавляет файл в ползунок jQuery.

Так я примерно в итоге:

$posttitle = the_title(); 

$args = array(
'post_type' => 'attachment', 
'numberposts' => -1, 
'post_status' => null, 
'post_parent' => $post->ID 
); 

$attachments = get_posts($args); 
$alternativeurl = 
    if ($attachments) { 
    foreach ($attachments as $attachment) { 
     echo '<li>'; 
     echo wp_get_attachment_image_src(); 
     echo '</li>'; 
     } 
    } else { 
    //use a php function to loop through all the folders in the 
    //wp-content/uploads that match the $posttitle variable. 
    //when found, loop through each file inside the folder and add 
    //each url to my jQuery slider as a foreach loop. 
    } 

Надежда, что помогает объяснить немного дальше.

+2

И вопрос ...? – axiac

+0

Вместо того, чтобы пытаться переставить все папки $ hotelname в один и тот же каталог, я прав, думая, что могу сканировать каталоги для самого низкого каталога, откуда я могу передать исходные изображения. Немного похоже на петлю foreach с изображением, полученным как: –

+1

чего вы хотите достичь? – aimme

ответ

0

Насколько я понимаю, вам нравится сканировать всю иерархию папок и находить все изображения, которые «принадлежат» к некоторому списку отелей.

, если мы предположим, что все названия отеля уникальны и у вас есть доступ к файловой системе, где образа, я бы порекомендовал вам

  1. использования readdir() чтобы получить содержимое корневого каталога, в котором изображение хранится
  2. использование id_dir() и is_file(), чтобы проверить, если следующий элемент является каталогом или обычного файл
  3. итерации глубже иерархии
  4. если файл соответствует вашим требованиям (например, это «*.JPG ") вы можете получить полный путь к его директории с помощью realpath() и разделить строку, используя DIRECTORY_SEPARATOR в качестве разделителя
  5. array_pop() даст вам имя, которое название отеля

вот некоторая дополнительная информация: http://php.net/manual/en/ref.dir.php

0

у меня есть что-то подобное, чтобы показать все папки

$sName = '.'; 
$oDir = opendir($sName); 
$aDirList = array(); 

while($sDir = readdir($oDir)) { 
    if($sDir != '.' && $sDir != '..') { 
     if(is_dir($sName.'/'.$sDir)) { 
      $aDirList[] = $sDir; 
     } 
    } 
} 

closedir($oDir); 

if(!empty($aDirList)) { 
    sort($aDirList); 
    echo "Folders list : <br>"; 
    echo "<ul>"; 
    foreach($aDirList as $sDir) { 
     echo "<li><a href=\"$sName/$sDir \">$sDir</a></li>"; 
    } 
    echo "</ul>"; 
} 

Может быть, вы собираетесь иметь некоторые ошибки но это пример моего кода ...

Надеюсь, я вам помогу! :)

+1

Ive изменил первую строку, чтобы прочитать $ sName = get_site_url(). '/ Wp-content/uploads'; Я использую ваш пример, но я получаю ошибки: http://greenmonkeypublicrelations.com/citypads/functions/ –

+0

О ... Этот маленький код полностью функциональен для меня. Изучите PHP-документ, чтобы найти с вами ошибки. Я посмотрю, когда у меня будет немного времени, чтобы помочь вам. Удачи ! – SatanicGeek

Смежные вопросы