我已将图片上传到我的主题文件夹内的目录中,并尝试使用file_exists输出图像。
并非所有帖子都有图片,这就是我使用file_exists功能的原因。
我没有得到预期的结果,并希望对此问题有所了解。
{{1}}
答案 0 :(得分:2)
让我解释一下帮助你:
file_exists()
在服务器端运行,以查看服务器硬盘上是否存在文件。由于它在服务器端运行,因此需要通过文件所在文件夹的绝对路径进行检查。
和我在一起......
运行if(file_exists($vendorPhotoImg))
时,PHP会检查服务器硬盘上是否存在指定的文件。如果是,则它运行代码块中的代码,即img
HTML呈现给浏览器。
要检查文件是否存在,您必须使用服务器硬盘位置的绝对路径。您使用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。
为您提供几点说明:
esc_url()
在将URL发送到浏览器之前对其进行清理。 printf()
而不是echo和串联字符串。你可以在这里使用你想要的东西。