如何掩盖外部下载链接作为内部链接,并且只能通过登录用户才能访问?甚至已登录的成员,如果他们登录并查看帖子,也不应该看到外部下载站点域。它应该为每个人掩盖。另外,如果他们不登录WordPress网站,他们就不应访问下载URL。
喜欢直接下载链接示例: www.externallink.com/direct-download-link1
我们想像我们的内部URL一样掩盖它:www.ourwebsiteurl.com/direct-download-link1
且以上链接应仅通过登录成员才能访问。
如何做?
我们已经尝试了以下functions.php和single post.php中的代码。但是什么都没有发生,什么也没有改变。我们完全控制了外部下载链接网站。它是基于Perl的脚本,生成不同的下载链接。
$user = wp_get_current_user();
if( $user->exists ) {
add_filter( 'public_link_root', function() { return 'example.com'; } );
}
$some_link = apply_filters('public_link_root', 'ourwebsite.com') . '/resources';
echo '<a href="' . $some_link . '">View Resources</a>';
或这个:
$link_to_output = apply_filters( 'public_link_root', 'ourwebsite.com' ) . '/resources/whatever/here';
或in functions.php:
function custom_link() {
$user = wp_get_current_user();
return (is_user_logged_in())? "www.example.com/direct-download-link1":"just_a_dummy_link";
}
single.php:
echo '<a href="' . custom_link() . '">View Resources</a>';
我希望将更改为www.externallink.com域的所有URL将更改为www.ourwebsiteurl.com,但上述代码没有任何更改。这些链接应掩盖,即使已登录成员。如果这些链接未登录,这些链接将它们复制并粘贴到浏览器中。
update
OP的评论:"重定向呢?可以看到我知道我只是想要至少隐藏那些URL,所以它们中的大多数都不知道。"
最简单的方法是编辑服务器上的.htaccess文件
Redirect 301 /resources https://external.com/direct-download-link1
编辑
也许您可以使用is_user_logged_in()
创建自己的自定义功能(请参阅DOC(。您要放置链接的任何地方,调用您的自定义功能:
so so in functions.php:
function custom_link() {
// will only show link when user is logged in
if (is_user_logged_in()) {
// this only shows the "internal" link which will be redirected to external link
echo '<a href="https://www.example.com/resources">View Resources</a>';
}
}
和您的页面上:
custom_link(); //will not show link if user not logged in