如何在所有帖子中掩盖外部下载链接并限于成员



如何掩盖外部下载链接作为内部链接,并且只能通过登录用户才能访问?甚至已登录的成员,如果他们登录并查看帖子,也不应该看到外部下载站点域。它应该为每个人掩盖。另外,如果他们不登录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

最新更新