检测wordpress主题中是否存在文件?

时间:2014-04-13 18:21:29

标签: php wordpress wordpress-theming

我正在创建一个wordpress模板。

我正在显示视频目录中的一个,如

<video controls preload="auto" autoplay loop poster="<?= item_image; ?>">
<source src="<?= $item_video_mp4; ?>" type='video/mp4' />
<source src="<?= $item_video_webm; ?>" type='video/webm' />
</video>

但是,在某些情况下,该项目没有视频文件。在这种情况下,我只想显示替代内容。

我试图使用php的file_exists(),但我读到它只适用于本地路径,而不是网址。所以我试图使用文件的本地相对路径。

我对视频的网址是根据帖子标题计算的:

$item_path = '/wp-content/uploads/item_media/';
$item_name = get_the_title();
$item_video_mp4 =  $item_path . $item_name .'.mp4';

这样可以显示视频和海报框架(如果存在)。问题是,我需要检测视频是否不存在。

由于php模板位于/wp-content/themes/mytheme,因此我尝试使用

$filepath = '../../uploads/item_media/'. $item_name .'.mp4';
if (file_exists($filepath)) {
   echo "The file $filepath exists";
} else {
   echo "The file $filepath does not exist";
}

但是文本总是返回false。

有什么想法吗?

更新

我也试过这条道路:

$filepath = WP_CONTENT_URL . '/uploads/item_media/'. $item_name .'.mp4'

哪个回声

"http://des.dev/wp-content/uploads/item_media/4595DW.mp4 does not exist"

即使它确实如此。

2 个答案:

答案 0 :(得分:1)

你应该尝试使用它:

$filepath = WP_CONTENT_URL . '/uploads/item_media/'. $item_name .'.mp4';
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $filepath)) {
    ...

问题是PHP的file_exists函数采用相对或绝对路径,并且它看起来不像是与文件系统结构匹配。上面的$_SERVER['DOCUMENT_ROOT'] .部分会将您的Apache DocumentRoot设置添加到您要检查的路径,使file_exists的参数成为绝对路径。

答案 1 :(得分:0)

这似乎有效,不确定这是否是最佳方式:

$filepath = $_SERVER['DOCUMENT_ROOT'] . '/wp-content/uploads/item_media/'. $ring .'.mp4'