我有一个CPT,用于链接本地驱动器上的资源。
我在单个资源中有此代码。php:
<?php
global $post;
the_post();
$location = get_post_meta($post->ID, \'sc_stace_resource_location\', true);
$count = (int) get_post_meta($post->ID, \'sc_stace_view_count\', true);
$count++;
update_post_meta($post->ID, \'sc_stace_view_count\', $count);
wp_redirect($location);
die();
?>
基本上,用户单击资源,资源计数器递增,然后用户应该被带到文件位置。文件位置示例如下:
file://S:/_%20Transfer/Scott/wfw_christmas_041111.pdf
现在,如果我把它放在任何浏览器的地址栏中,文件都可以很好地加载。但是当我使用上面的代码导航时,我在webkit浏览器上得到一个空白页面,而在IE浏览器中无法显示一个页面。
不确定这是PHP问题还是WordPress问题。
有人知道为什么这样不行吗?
更新
这似乎不起作用的原因是因为浏览器的安全性。我能想到的唯一解决方案是直接链接到该文件,但如果这样做,我将失去跟踪下载数量的能力。有什么解决方案吗?
最合适的回答,由SO网友:Scott 整理而成
由于浏览器的安全性,上述代码无法工作。
我决定使用以下代码:
<?php
global $post;
the_post();
$location = get_post_meta($post->ID, \'sc_stace_resource_location\', true);
$count = (int) get_post_meta($post->ID, \'sc_stace_view_count\', true);
$count++;
update_post_meta($post->ID, \'sc_stace_view_count\', $count);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title><?php the_title(); ?></title>
<meta http-equiv="REFRESH" content="1;url=<?php echo $location; ?>">
</HEAD>
<BODY>
Redirecting to selected file. If nothing happens <a href="<?php echo $location; ?>">click here</a>
</BODY>
</HTML>
我正在开发的网站是为公司内部网开发的,在他们的网络上,他们必须使用IE。由于该网站是内部网网站,因此该网站在IE中被视为受信任的,因此文件链接工作正常。