Я делаю шаблон страницы WordPress, и я пытаюсь добавить все изображения из каталога в массив, а затем использовать foreach
в echo
их все в HTML. Но когда я пытаюсь загрузить страницу, я получаю эту ошибку Invalid argument supplied for foreach()
, так что это означает, что это не массив, но он работал раньше. Я также попробовал это с scandir
функция, но это дало бы мне ошибку [function.scandir]: failed to open dir: not implemented in
, Используемый код PHP включен ниже.
$folder = get_bloginfo('template_directory') . '/img/dir/';
$images = glob($folder . "*.{jpg,png,gif}", GLOB_BRACE);
foreach ($images as $image)
{
echo '<img src="' . $image . '" />';
}
Путь к папке правильный, потому что с кодом ниже я получаю одну картинку.
echo '<img src="' . get_bloginfo('template_directory') . '/img/dir/image.jpg" />';
Заранее спасибо!
Я думаю, что template_directory теперь возвращает URL в WordPress, если вы используете get_template_directory () это вернет абсолютный путь. (он не возвращает косую черту, поэтому вам нужно не забыть добавить это)
Это может быть проблема, которую вы имеете, стоит попробовать.
Если вы используете дочернюю тему, используйте get_stylesheet_directory ()
РНР glob()
функция вернусь false
в случае ошибки (или когда не найдено подходящих файлов, в зависимости от вашей ОС).
Я подозреваю, что в вашем конкретном случае возвращаемое значение действительно false
(как foreach
может работать с пустыми массивами, просто пропустит блок). Попробуйте выяснить: var_dump($images);
,
Вы должны добавить проверку, чтобы убедиться, что возвращаемое значение действительно то, с чем вы можете работать:
if(is_array($images)) {
foreach($images as $image) { /* ... */ }
}
Проблема в пути. Вы пытаетесь '/img/directory/';
и это не работает А потом вы говорите, что '/img/dir/image.jpg'
работает. Ты видишь каталог а также реж?
Вы ошиблись в пути, вот и все.