Создайте страницу WordPress, перенаправляющую на другой URL-адрес

Я хотел создать новую страницу WordPress, которая на самом деле является ссылкой на другой сайт. Цель состоит в том, чтобы страница отображалась в списке моих страниц, но фактически отправляла веб-пользователя на целевой URL.

Например, скажем, я хочу включить страницу, которая указывает «Мои фотографии», но фактически перенаправляет их на Flickr.

Я предполагаю, что одним из способов добиться этого является использование специальной страницы шаблона с инструкцией перенаправления в PHP, но, к сожалению, я новичок в PHP и не знаю, как это сделать …

Вы можете выполнить эти два способа, оба из которых необходимо выполнить, отредактировав файлы шаблонов.

Первый заключается только в том, чтобы добавить html-ссылку на вашу навигацию, где бы вы ее не появлялись.

Второй (и, я думаю, тот, который вы ищете) заключается в создании нового шаблона страницы, что не слишком сложно, если у вас есть возможность создать новый .php-файл в каталоге тем / шаблонов. Что-то вроде приведенного ниже кода должно:

<?php /* Template Name: Page Redirect */ header('Location: http://www.nameofnewsite.com'); exit(); ?> 

Если имя шаблона – это то, что вы хотите установить, и URL-адрес в функции заголовка – это новый URL-адрес, на который вы хотите направить пользователя. После того, как вы измените приведенный выше код в соответствии с вашими потребностями, сохраните его в файле php в активной папке темы с именем шаблона. Итак, если вы оставите имя своего шаблона «Перенаправление страницы», введите страницу php-файла-redirect.php.

После того, как это было сохранено, войдите в свой бэкэнд WordPress и создайте новую страницу. Вы можете добавить заголовок и контент в тело, если хотите, но важно отметить, что с правой стороны должен быть раскрывающийся вариант, чтобы вы могли выбрать, какой шаблон страницы использовать, причем по умолчанию отображается первый. В этом выпадающем списке должно быть указано имя нового файла шаблона. Выберите новый шаблон, опубликуйте страницу, и вы должны быть золотыми.

Кроме того, вы можете сделать это динамически, используя раздел «Пользовательские поля» под редактором тела. Если вам интересно, дайте мне знать, и я могу вставить код для этого парня в новый ответ.

Я обнаружил, что эти проблемы чаще всего решаются на уровне сервера. У вас есть доступ к файлу .htaccess, где вы можете разместить правило перенаправления? Если так:

 RedirectPermanent /path/to/page http://uri.com 

Это перенаправление также будет служить ответом «301 Moved Permanentently», чтобы указать, что страница Flickr (например) является постоянным URI для старой страницы.

Если это невозможно, вы можете создать собственный шаблон страницы для каждой страницы и добавить следующий код PHP в начало шаблона страницы (на самом деле это все, что вам нужно в шаблоне:

 header('Location: http://uri.com, true, 301'); 

Дополнительная информация о заголовках PHP .

Альтернативно, используйте фильтр.

Создайте пустую страницу в своем блоге WordPress, названную соответствующим образом тому, что вам нужно. Обратите внимание на post_id. Затем создайте фильтр, который изменяет его постоянную ссылку.

 add_filter('get_the_permalink','my_permalink_redirect'); function my_permalink_redirect($permalink) { global $post; if ($post->ID == your_post_id_here) { $permalink = 'http://new-url.com/pagename'; } return $permalink; } 

Таким образом, URL-адрес будет отображаться правильно на странице, не требуются смешные переадресации.

Если вам нужно сделать это много, подумайте об использовании пользовательских полей postmeta, чтобы определить значение postmeta для «offsite_url» или что-то в этом роде, затем вы можете создавать страницы по мере необходимости, вводить значение «offsite_url», а затем использовать фильтр как и выше, вместо проверки post_id, которую вы проверяете, чтобы проверить, требуется ли ему послетремма, и изменить постоянную ссылку по мере необходимости.

Я не знаком с шаблонами WordPress, но я предполагаю, что заголовки отправляются в браузер WP, прежде чем ваш шаблон будет даже загружен. Из-за этого общий метод перенаправления:

 header("Location: new_url"); 

не будет работать. Если есть способ заставить отправку заголовков через шаблон до того, как WP что-нибудь сделает, вам нужно будет использовать Javascript следующим образом:

 <script language="javascript" type="text/javascript"> document.location = "new_url"; </script> 

Поместите это в раздел, и он будет запущен при загрузке страницы. Этот метод не будет мгновенным, и он также не будет работать для людей с отключенным Javascript.

Есть три способа сделать это:

  1. Изменив код 404.php .
  2. Используя плагины WordPress.
  3. .htaccess файл .htaccess .

Полный учебник приведен на http://bornvirtual.com/wordpress/redirect-404-error-in-wordpress/906/

Используйте «сырой» плагин https://wordpress.org/plugins/raw-html/. Тогда это так же просто, как:

 [raw] <script> window.location = "http://www.site.com/new_location"; </script> [/raw] 

Я нашел плагин, который помог мне сделать это в течение нескольких секунд без редактирования кода:

https://wordpress.org/plugins/quick-pagepost-redirect-plugin/

Я нашел его здесь: http://premium.wpmudev.org/blog/wordpress-link-title-external-url/