用php获取所有img和pdf

时间:2018-06-14 10:35:42

标签: php wordpress

我试图通过php从文件夹中获取所有图像,并将它们链接到我有pdf文件的另一个文件夹。两者的名字都是一样的。

我的代码如下所示:

    $dir_jpg = "../wp-content/uploads/newspaper/jpg/";
    $dir_pdf = "../wp-content/uploads/newspaper/pdf/";

        $images = glob($dir_jpg."*.*");
        $pdfs = glob($dir_pdf."*.*");

        $array = array_combine($images, $pdfs);

        foreach($array as $image => $pdf){
          echo '<ul>';
            echo '<li>';
              echo '<a href="'.$pdf.'" target="_blank"><img src="'.$image.'" height="100" width="100" /></a>';
            echo '</li>';
          echo '</ul>';
        }

我做了var_dump来检查数组,但它是空的。可能是我的代码不起作用的原因?

更新 我将我的文件存储在wordpress文件夹系统中,但我没有上传它们 wordpress媒体,所以在数据库中没有关于它们的记录。我想避免它,并通过ftp帐户上传这些文件,并用PHP代码列出它们。

更新2 在与@Gabor Klement聊天时,我们有了这个

  $wp_root = wp_upload_dir()['baseurl'];
      $dir_jpg = $wp_root."/newspaper/jpg/";
      $dir_pdf = $wp_root."/newspaper/pdf/";

      $images = glob($dir_jpg."*.*");
      $pdfs = array();

      $imgNum = count($images);

      $list = '<ul>';
        for ($i = 0; $i < $imgNum; $i++) {
            $filename = substr(basename($images[$i]), 0, -4);
            $pdfs[$i] = $dir_pdf.$filename.".pdf";

            if (file_exists($dir_pdf.$filename.".pdf")) {
                $list .= '<li><a href="'.$pdfs[$i].'" target="_blank"><img src="'.$images[$i].'" height="100" width="100" /></a></li>';
            }

        }

        $list .= '</ul>';

        echo $list;

但由于某种原因,wordpress没有显示这些文件。有趣的部分是在$ list工作之前放置的<img src="<?php echo $dir_jpg ?>/july2012.jpg" />

更新3 将路径传递给$images的唯一方法是wp_upload_dir()['basedir'];,但是wordpress会创建一个像domain.com/home/user/domains/domain/public_html/wp-content/uploads/newspaper/jpg/december2012.jpg这样的路径,但找不到图像。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。我不得不使用wp_upload_dir()['basedir']将路径传递给glob,然后wp_upload_dir()['baseurl']将链接传递给src。

也许这不是最好的解决方案,但它确实有效。

  $base_dir = trailingslashit(wp_upload_dir()['basedir']);
  $base_url = wp_upload_dir()['baseurl'];
  $dir_jpg  = '/newspaper/jpg/';
  $dir_pdf  = '/newspaper/pdf/';

  $images = glob($base_dir.$dir_jpg.'*.*');

  foreach($images as $image) {
   $url = $base_url.$dir_jpg.basename($image);

   $filename = substr(basename($image), 0, -4);

   $pdfs = $base_url.$dir_pdf.$filename.".pdf";

   printf('<a href="'.$pdfs.'" target="_blank" class="newspaper-link col-xl-3"><img src="%s" alt="'.$filename.'.pdf"><div class="newspaper-hover"></div></a>', esc_url($url));
        }