Как замаскировать внешние ссылки для скачивания во всех сообщениях и ограничить пользователей? - PullRequest
0 голосов
/ 13 мая 2019

Как замаскировать внешние ссылки для скачивания как внутренние ссылки и быть доступными только зарегистрированным пользователям? И даже зарегистрированные пользователи не должны видеть домен внешнего сайта загрузки, если они вошли в систему и просмотрели сообщения. Это должно быть замаскировано для всех. Кроме того, им не следует получать доступ к URL-адресу загрузки, если они копируют / вставляют URL-адрес в свой браузер, если они не вошли на сайт WordPress.

Как пример прямой ссылки для скачивания здесь: 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";
}

single.php:

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

Я ожидал, что все URL-адреса домена www.externallink.com будут изменены на www.ourwebsiteurl.com, но с вышеуказанными кодами ничего не изменилось. Ссылки должны быть замаскированы даже для зарегистрированных пользователей. И эти ссылки не должны работать, если они копируют и вставляют эти URL в свой браузер, если они не вошли в систему.

1 Ответ

0 голосов
/ 13 мая 2019

Обновление

комментарии ОП: «Как насчет перенаправления? Видно, я знаю, что просто хотел хотя бы спрятать эти 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...