2017-02-03 3 views
0

Я пытаюсь вытащить все изображения из указанного каталога, а затем отобразить их. Я использовал ниже фрагмент кода в обычный веб-сайт, и он работаетWordpress: Использование glob() возвращает пустой массив

<?php $dirname = "images/tile/tile2/"; 
    $images = glob($dirname."*.jpg"); 

    foreach($images as $image) { 
    echo '<li><img src="'.$image.'" /><br /></li>'; 
}?> 

Я теперь переехал этот код и изменить его на WordPress сайте, и я получаю пустой массив.

<?php $dirname = get_template_directory_uri()."/images/tile/tile1/"; 
     $images = glob($dirname. "*.jpg"); 
     //$images = glob($dirname."*. {jpg}", GLOB_BRACE); - tried with GLOB_RACE 
     foreach($images as $image) { 
     echo '<li><img src="'.$image.'" /><br /></li>'; 
}?> 

Второй код

<?php define('ACCREDPATH', get_template_directory_uri() . '/images/tile/tile1/'); 
$images = glob(ACCREDPATH. "*.jpg"); 
//$images = glob(ACCREDPATH. "*. {jpg}", GLOB_BRACE); - tried with GLOB_RACE 
foreach($images as $image) { 
    echo '<li><img src="'.$image.'" /><br /></li>'; 
}?> 
  • Я проверил, что изображения находятся в папке
  • Я сделал var_dump и я получаю правильный путь.
  • var_dump на Glob ($ изображения) дает массив (0) {}
  • Я также посмотрел на другие threads с этой проблемой и до сих пор ничего не

Пожалуйста, любая помощь будет полезна.

ответ

1

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

http://php.net/manual/en/function.glob.php

Путь вы предоставляете в рабочем коде относительна. Он функционирует, потому что он может использоваться как путь к файлу, так и URL.

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

Пример:

$theme_img_path = '/images/tile/tile1/'; 
$images = glob(get_template_directory() . $theme_img_path . '*.jpg'); 

foreach ($images as $image) { 

    // Convert the filename into an absolute URL. 
    echo get_template_directory_uri() . $theme_img_path . basename($image); 
} 

Там другая проблема в вашей второй попытке, что стоит отметить,. Вы не можете использовать функцию для установки значения константы.

+0

Спасибо! это сработало! – geekysneaks

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