2016-12-01 2 views
0

Я загрузил изображения в каталог внутри моей папки темы и пытался использовать file_exists для вывода изображений.Альтернатива функции file_exists для Wordpress

Не все мои сообщения имеют изображения, поэтому я использую функцию file_exists.

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

$preGetImage = get_template_directory_uri();                     
    $vendorPhotoLogo = $preGetImage."/img/vendorimages/logo-".$vendor->acctno.".png"; 
    $vendorPhotoImg = $preGetImage."/img/vendorimages/img-".$vendor->acctno.".png"; 

    if(file_exists($vendorPhotoImg)){ 
     echo '<img src="'.$vendorPhotoImg.'"/>'; 
    } 

    if(file_exists($vendorPhotoLogo)){ 
     echo '<img src="'.$vendorPhotoLogo.'"/>'; 
    } 
+1

Можете ли вы уточнить, какие входные сигналы запускают какие результаты? Вы видите теги изображений для всех, теги изображений для none и т. Д. –

+1

Попробуйте использовать 'get_template_directory()', а не 'get_template_directory_uri()' – Dre

+1

Чтобы добавить к тому, что говорит @Dre, вы не можете полагаться на проверку существования файла с использованием URI, вам нужно использовать путь к файлу - вот что получит 'get_template_directory()' для вас. –

ответ

1

Позвольте мне объяснить, чтобы помочь вам:

file_exists() работает на стороне сервера, чтобы увидеть, существует ли файл на жестком диске сервера. Поскольку он выполняется на стороне сервера, вам необходимо проверить его с помощью абсолютного пути к папке, в которой находится файл.

Оставайтесь со мной ....

При запуске if(file_exists($vendorPhotoImg)), PHP проверяет, является ли указанный файл существует на жестком диске сервера. Если да, то он запускает код внутри блока кода, т. Е. HTML-код img отображается в браузере.

Для проверки наличия файла необходимо использовать абсолютный путь к местоположению жесткого диска сервера. Вы используете get_template_directory(), чтобы получить путь к папке для своей темы.

Но подождите, вам понадобится путь URL-адреса к местоположению изображения для интерфейса. Чтобы получить абсолютный путь к URI изображения, get_template_directory_uri().

Вот код, который нужно:

$theme_directory = get_template_directory(); 
$theme_uri  = get_template_directory_uri(); 

$vendorPhotoLogo = '/img/vendorimages/logo-' . $vendor->acctno . '.png'; 
$vendorPhotoImg = '/img/vendorimages/img-' . $vendor->acctno . '.png'; 


if (file_exists($theme_directory . $vendorPhotoImg)) { 
    printf('<img src="%s"/>', esc_url($theme_uri . $vendorPhotoImg)); 
} 

if (file_exists($theme_directory . $vendorPhotoImg)) { 
    printf('<img src="%s"/>', esc_url($theme_uri . $vendorPhotoLogo)); 
} 

Обратите внимание, как file_exists() использует каталог темы и img источник использует URI.

Несколько примечаний для вас:

  1. код использует esc_url() чтобы санировать URL перед отправкой его в браузер.
  2. Я предпочитаю printf() над эхом и конкатенацией строк в этом случае. Вы можете использовать то, что вы хотите здесь.
+0

Удивительно это сработало. Благодарим вас за подробное объяснение. :) – user2120881

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