Я создаю тему wordpress, и я пытаюсь получить все файлы jpg из каталога в случайном порядке, используя php .... я использую Xampp на win7 (localhost).

Это код:

<? 
    $dir =  get_template_directory_uri().'/images/top/';

    $file_display = array ('jpg', 'jpeg');
    if(file_exists($dir) == false){
        echo 'Directory \'', $dir, '\' not found';
    } else {
       $dir_contents = scandir($dir);
       shuffle($dir_contents);
       foreach ($dir_contents as $file) {
           $file_type = strtolower(end(explode('.', $file)));
           if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true){ 
                echo '<img  src="', $dir, '/', $file, '" alt="', $file, '" />';    
           }
       }
   } 
?>

Я всегда получаю

Directory 'http://localhost/ni/wp-content/themes/A/images/top/' not found 

Я тоже пытался изменить

$dir =  get_template_directory_uri().'/images/top/';

Чтобы :

    $dir = "C:\xampp\htdocs\Ni\wp-content\themes\A\images\top\";

Но все равно не повезло, любая помощь будет оценена по достоинству!

1
Firezilla12 2 Май 2013 в 12:51
2
У вас есть и if перед тестом (file_exists($dir) == false) ?
 – 
Mark Baker
2 Май 2013 в 12:55
Да редактировал вопрос, спасибо! у меня это было на моем исходном коде!
 – 
Firezilla12
2 Май 2013 в 12:57
Попробуйте заменить get_template_directory_uri на get_template_directory, потому что get_template_directory_uri дает URI (а вы этого не хотите)
 – 
EaterOfCode
2 Май 2013 в 12:59
Начиная с PHP 5.0 file_exists принимает HTTP (среди нескольких других протоколов), поэтому это не имеет значения, если OP использует PHP5.
 – 
naththedeveloper
2 Май 2013 в 13:04
С использованием выходов get_template_directory (): C: \ xampp \ htdocs \ Ni / wp-content / themes / A / images / top / со смешанными косыми чертами (linux windows syle?), и я получаю Directory '' не найден
 – 
Firezilla12
2 Май 2013 в 13:04

1 ответ

Лучший ответ

Вот как я заставил это работать.

  <? 
            $dir =  get_template_directory().'/images/top';
            $imageDir= get_template_directory_uri().'/images/top';
            $file_display = array ('jpg', 'jpeg');
            if (file_exists($dir) == false) {
              echo 'Directory \'', $dir, '\' not found';
            } else {
              $dir_contents = scandir($dir);
              shuffle($dir_contents);
              foreach ($dir_contents as $file) {
                $file_type = strtolower(end(explode('.', $file)));
                if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) {
                  echo '<img src="', $imageDir, '/', $file, '"  />';
                }
              }
            } 
  ?>
1
Firezilla12 2 Май 2013 в 13:20
Используя get_template_directory () для получения массива. и get_template_directory_uri () для отображения изображений. спасибо всем за то, что помогли мне добраться до этого ...
 – 
Firezilla12
2 Май 2013 в 13:21
1
Обратите внимание, что в большинстве случаев лучше использовать get_stylesheet_directory(), чем get_template_directory(), если вы пытаетесь загрузить ресурсы, потому что, если вы используете дочернюю тему, первая вернет каталог дочерней темы, а вторая вернет каталог родительской темы и, таким образом, приведет к тому, что вы пропустите ресурсы дочерней темы.
 – 
ebohlman
5 Май 2013 в 10:57