Аватара пользователя сохраняется в ../wordpress/wp-content/uploads/
папка с именем и расширением в качестве ввода. То есть, если загружен файл PNG, расширение становится user_avatar0.png
в противном случае, если JPG загружен, он станет user_avatar0.jpg
,
Я загружаю несколько пользовательских аватаров, используя для каждого цикла.
Это код, который я использовал для загрузки файла аватара:
$path="../wordpress/wp-content/uploads/";
$av=$path."user_avatar0.png|.jpg"; // if jpg exists loads jpg otherwise load png
<img src="'. $av .'" height="200" width="200" border="0" >
Как выбрать файл из каталога, который содержит файлы разных расширений (jpg, png и т. Д.)?
Что вы пытались с умным .png|.jpg
к сожалению не известный синтаксис. Это не будет интерпретироваться ни PHP, ни браузером, который анализирует HTML. В PHP нет функции, которая бы автоматически заполняла переменные пути путем расширения параметров оболочки ? . Там конечно glob()
, но перемещение по всему каталогу для получения одного файла с расширением jpg / png было бы очень неэффективным.
Если у вас нет записи о том, что является расширением файла (вы могли бы запросить базу данных WP?), Вам придется просто проверить что-то вроде этого, предполагая, что jpg / png являются единственными возможностями:
$file = 'user_avatar0.';
$file .= file_exists($file.'jpg') ? 'jpg' : 'png';
Это объединяет базовое имя с jpg
расширение, если есть совпадение, и возвращается к png
если не. Если есть вероятность, что у пользователя вообще нет аватара, вам следует if-elseif-else
вместо этого и по умолчанию для стандартного заполнителя, если оба file_exists
проверки не пройдены. Вы также можете использовать realpath()
, is_file()
или же stream_resolve_include_path()
проверить, существует ли файл; но логика остается прежней. Ходят слухи, что последний вариант будет самым быстрым, но в любом случае каждый из них кеширует свои результаты.
В любом случае, если вы продолжаете отображать аватары одних и тех же пользователей при повторяющихся загрузках страниц, вам может понадобиться сохранить результаты этих проверок в $_SESSION
массив для устранения повторной и избыточной проверки. Я оставлю это для вас, чтобы сравнить PHP кеш файлов и кеш сессии.
Других решений пока нет …