2013-02-22 2 views
0

Я уже некоторое время борется с этим.PHP glob() перерывы на подстраницах WordPress

У меня есть галерея изображений, использующая плагин цикла jQuery, и файлы вытаскиваются из папки с помощью PHP glob(). Проблема в том, что когда я перехожу на другую страницу, галерея ломается из-за того, что URL-адрес новой страницы привязан к началу пути к файлу.

Пример:

Front Page URL: http://localhost/project/image-display-images/image.jpg

Другое URL страницы: http://localhost/**NEWPAGE**/project/image-display-images/image.jpg

Вот мой код:

$files = glob('image-display-images/*.*'); 

     for ($i=1; $i<count($files); $i++) 

     { 
      $num = $files[$i]; 
      echo '<img src="'.$num.'"'.' alt="Campus Images" width="362" height="246"/>'; 
     } 

Это создаст список изображений для JQuery цикла к прокрутите. Однако он работает только на первой странице.

Любые идеи?

РЕШЕННЫЙ!

Вот мой новый код:

$files = glob(ABSPATH.'/image-display-images/*.*'); 

foreach ($files as $f) { 
    echo '<image src="'.home_url(str_replace(ABSPATH,'',$f)).'"alt="Campus Images" width="362" height="246"/>'; 

} 

Это работает на всех страницах.

Спасибо!

+0

Если изображение - отображаемые изображения является уникальной папкой для всех сообщений, попробуйте передать абсолютный путь к функции glob. – Ateszki

ответ

1

Используйте абсолютный путь:

$files = glob(ABSPATH.'image-display-images/*.*'); 

WordPress Ядро устанавливает постоянную ABSPATH поэтому она должна быть достаточно надежной.

glob касается путей файловой системы, но вы пытаетесь загрузить URL-адреса. Чтобы отобразить файлы так, как вы пытаетесь, вам нужно будет преобразовать результаты в URL-адреса. Вот пример с голубыми костями.

$files = glob(ABSPATH."*.*"); 
foreach ($files as $f) { 
    echo home_url(str_replace(ABSPATH,'',$f)); 
} 

Вы можете лучше писать вам собственную функцию, чтобы захватить ваши имена файлов, а не в зависимости от glob, который приходит с предупреждением о не доступны на некоторых системах. См.: http://codex.wordpress.org/Filesystem_API

+0

Это фактически дало мне правильные пути на обеих страницах, но изображения не отображаются. Это самое близкое, что я пришел, чтобы заставить это работать правильно. '$ files = glob (ABSPATH.'image-display-images /*.* ');' КОРРЕКЦИЯ: Его привязка к URL-адресу страницы для ссылок на изображение, хотя и отображается как правильная ссылка. Кажется, что мне нужно как-то удалить добавление URL-адреса страницы в ссылки на изображение. hmm .. – user2099954

+0

См. мое редактирование. Кроме того, не используйте относительные URL-адреса в WordPress. Они являются источником постоянной боли. Всегда создавайте полный путь. –

+0

Спасибо! Я попробую это и посмотрю, что я могу получить. – user2099954

0

Определить полный путь к вашей галерее вместо 'image-display-images/*.*' Например glob('/var/etc/www/image-display-images/*.*')

+0

Я пробовал этот, но без положительных результатов. Это не вызывает ничего общего. – user2099954

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