Маскировать все исходящие ссылки - PullRequest
0 голосов
/ 17 июня 2011

У меня есть сайт загрузки программного обеспечения, где все программное обеспечение размещено на Amazon S3.Я использую WordPress для своего сайта, и я не хочу, чтобы мои посетители знали, что я размещаю все программное обеспечение на Amazon S3.Я хочу переписать все URI Amazon S3 в URL своего сайта, и всякий раз, когда посетители нажимают эти URI, они должны перенаправляться в Amazon S3 ...

Я пытался подключить плагин Pretty Links Lite, чтобы скрыть ссылки Amazon S3, но этоПлагин работает очень медленно и не имеет поддержки.

У кого-нибудь есть совет или лучшая рекомендация, как этого добиться?

Ответы [ 2 ]

0 голосов
/ 09 января 2014

Вступление в игру немного запоздало, но я столкнулся с той же проблемой с Pretty Links Lite.Чем больше «симпатичных ссылок» вы добавляете, тем больше это замедляет работу вашего сайта, даже с агрессивным кэшированием.

Мое решение состояло в том, чтобы создать пользовательский тип записи под названием redirect и использовать некоторые настраиваемые поля (хотя я использую Advanced CustomПлагин Fields для более элегантного бэкэнда).Затем просто добавьте быструю функцию, которая подключается к template_redirect, которая проверяет ваш тип записи.

Единственным недостатком является то, что вам нужно назначить слаг для вашего CPT, но вы можете легко настроить его в функции регистра..

Вот мой код:

function register_redirect_cpt {
  register_post_type('redirect', array(
    'label' => 'redirects',
    'labels' => array(
      'name' => 'Redirects',
      'singular_name' => 'Redirect',
      'add_new' => 'Add Redirect',
      'add_new_item' => 'Add New Redirect',
      'edit_item' => 'Edit Redirect',
      'new_item' => 'New Redirect',
      'view_item' => 'View Redirect',
      'search_items' => 'Search Redirects',
      'not_found' => 'No Redirects found',
      'not_found_in_trash' => 'No Redirects found in Trash'
    ),
    'description' => 'Pretty Redirects',
    'public' => true,
    'menu_position' => 5,
    'supports' => array(
      'title',
      'author',
      'custom-fields' // This is important!!!
    ),
    'exclude_from_search' => true,
    'has_archive' => false,
    'query_var' => true,
    'rewrite' => array(
      'slug' => 'redirect',
      'with_front' => false
    )
  ));
}
add_action('init', 'register_redirect_cpt') ;

Как я уже говорил, вы можете использовать настраиваемые поля или плагин ACF для настройки нескольких метабоксов - 1 для публичной ссылки и другой дляистинный пункт назначения.Я предполагаю, что вы используете ванильные настраиваемые поля.Затем вставьте это в ваш functions.php или файл функций темы:

function redirect_for_cpt() {
  if (!is_singular('redirect')) // If it's not a redirect then don't redirect
    return;

  global $wp_query;

  $redirect = isset($wp_query->post->ID) ? get_post_meta($wp_query->post->ID, '_true_destination', true) : home_url(); // If you forget to set a redirect then send visitors to the home page; at least we avoid 404s this way!

  wp_redirect(esc_url_raw($redirect), 302);
  exit;

}
add_action('template_redirect', 'redirect_for_cpt');
0 голосов
/ 17 июня 2011

Если вы не хотите передавать свои загрузки через сервер (что может испортить смысл размещения на Amazon S3), вы не сможете замаскировать тот факт, что ваши загрузки находятся на Amazon S3.

...