-2

如何将外部下载链接屏蔽为内部链接,并且只能由登录用户访问?如果他们登录并查看帖子,即使登录的成员也不应该看到外部下载站点域。应该为每个人蒙面。另外,如果他们没有登录到 wordpress 站点,则如果他们将 url 复制/粘贴到浏览器中,他们不应该访问下载 url。

就像这里的直接下载链接示例:www.externallink.com/direct-download-link1

我们想像我们的内部 url 一样掩盖它:www.ourwebsiteurl.com/direct-download-link1

并且上面的链接只能由登录的成员访问。

怎么做?

我们在functions.php 和单个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';

或在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";
}

单.php:

echo '<a href="' . custom_link() . '">View Resources</a>';

我希望 www.externallink.com 域的所有 url 都将更改为 www.ourwebsiteurl.com 但上面的代码没有任何改变。即使是已登录的成员,链接也应该被屏蔽。如果他们在未登录的情况下将这些 url 复制并粘贴到浏览器中,则这些链接不应该起作用。

4

1 回答 1

0

更新

OP 的评论: “重定向呢?可以看出我知道我只是想至少隐藏那些 url,这样他们中的大多数人都不会知道。”

最简单的方法是在您的服务器上编辑 .htaccess 文件

Redirect 301 /resources https://external.com/direct-download-link1

已编辑

is_user_logged_in()也许您可以使用(请参阅doc )创建自己的自定义函数。在您想放置链接的任何地方,调用您的自定义函数:

所以在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
于 2019-05-13T08:00:41.613 回答