如何隐藏所有帖子中的外部下载链接并限制其成员?

时间:2019-05-13 06:41:05

标签: javascript php wordpress url-redirection url-masking

如何将外部下载链接隐藏为内部链接,并且仅由登录用户访问?而且,即使已登录的成员登录并查看帖子,也不会看到外部下载站点域。应该为所有人屏蔽。另外,如果他们未登录到wordpress网站,则将网址复制/粘贴到浏览器中也就无法访问下载的网址。

例如此处的直接下载链接示例:www.externallink.com/direct-download-link1

我们希望像内部网址一样将其屏蔽: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";
}

single.php:

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

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

1 个答案:

答案 0 :(得分:0)

更新

OP的评论: “重定向是什么?可以看出,我知道我只是想至少隐藏那些网址,所以大多数人都不知道。”

最简单的方法是在服务器上编辑.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