我试图通过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
这样的路径,但找不到图像。
答案 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));
}