WordPress — Загрузка изображений из каталога в массив с переполнением стека

Так что я убил целый день, пытаясь сделать что-то, что потребовало бы кого-то, кто на самом деле умеет писать php менее чем за 2 минуты. Расстраиваюсь, но я учусь, делая и пытаясь разобраться.

Я чувствую себя неудачником из-за того, что не получил это, но 8 часов и подсчета (да, я знаю, хромает) достаточно.

Может кто-нибудь сказать мне, что не так с этим уравнением …

$dir = '../folder';

$images_array = glob($dir.'*.jpg');

$values['options'] = array( '<img src="$images_array"/>');

Это, вероятно, очевидно, но все, что мне нужно, это загрузить изображения из mysite.com/folder в массив $ values ​​[‘options’].

Если я просто укажу путь к одному изображению, то оно будет отображаться (очевидно, потому что оно не зависит ни от чего другого).

Благодарю.

@hellcode

Извините за беспорядок в «комментарии» под вашим ответом. К сожалению, я не мог заставить это работать? Может быть, мне нужно предоставить больше контекста.

Изображения в папке будут использоваться как элементы-флажки в форме. Это был мой оригинальный код (не работает):

add_filter('frm_setup_new_fields_vars', 'frm_set_checked', 20, 2);
function frm_set_checked($values, $field){
if($field->id == 187){
$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array( '<img src="$images_array"/>');
$values['use_key'] = true;
}
return $values;
}

Я добавил ваш код так:

add_filter('frm_setup_new_fields_vars', 'frm_set_checked', 20, 2);
function frm_set_checked($values, $field){
if($field->id == 187){
$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array();
foreach($images_array as $image) {
$values['options'][] = '<img src="'.$image.'"/>';
}
$values['use_key'] = true;
}
return $values;
}

Но это не потянуло файлы к сожалению 🙁

1

Решение

Пытаться:

$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array();
foreach($images_array as $image) {
$values['options'][] = '<img src="'.$image.'"/>';
}
0

Другие решения

Ну, одной из проблем может быть то, что glob() Функция использует текущий каталог, который может быть любым, если вы не используете chdir() функция.

Одна вещь, которая определенно является проблемой, заключается в том, что вы используете glob()возвращаемое значение, $images_array, как строка. Потому что это массив, который не будет работать.

Вот то, что должно работать.

// Allowed image formats (also known as a "whitelist")
$allowedFormats = ['jpg', 'jpeg', 'gif', 'png'];

// Array for holding any found images
$foundImages = [];

// Get the real path from the relative path
$path = realpath('../folder');
if ($path === false) {
die('The path does not exist!');
}
// Open a folder handle
$folder = dir($path);

// Read what is in the folder
while (($item = $folder->read()) !== false) {

// .. is the parent folder, . is the current folder
if ($item === '..' or $item === '.') {
continue;
}
// Find the last dot in the filename
// If it was not found then not image file
$lastDot = strrpos($item, '.');
if ($lastDot === false) {
continue;
}
// Get the filetype and make sure it is
// an allowed format
$filetype = substr($item, $lastDot);
if ( ! in_array($filetype, $allowedFormats)) {
continue;
}
// Okay, looks like an image!
$foundImages[] = $item;
}
// Close the folder handle
$folder->close();
0

По вопросам рекламы [email protected]