替代filepress的file_exists函数

时间:2016-12-01 23:02:28

标签: php wordpress

我已将图片上传到我的主题文件夹内的目录中,并尝试使用file_exists输出图像。

并非所有帖子都有图片,这就是我使用file_exists功能的原因。

我没有得到预期的结果,并希望对此问题有所了解。

{{1}}

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。

为您提供几点说明:

  1. 代码使用esc_url()在将URL发送到浏览器之前对其进行清理。
  2. 在这种边缘情况下,我更喜欢printf()而不是echo和串联字符串。你可以在这里使用你想要的东西。