我正在创建一个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(), 但我读到它仅适用于本地路径, 不适用于url。所以我试图使用本地相对路径到文件。
我的视频网址是根据帖子标题计算得出的:
$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"
即使有。
#1
这似乎可行, 不确定是否是最佳方法:
$filepath = $_SERVER['DOCUMENT_ROOT'] . '/wp-content/uploads/item_media/'. $ring .'.mp4'
#2
你应该尝试使用此代替:
$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的参数成为绝对路径。
评论前必须登录!
注册