В CMS WordPress создаются отдельные страницы под каждый файл, загруженный в медиатеку. Как от них избавиться не прибегая к плагинам?

Зачем от них нужно избавиться?

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

  1. В них нет смысла, ни для посетителя, ни для робота;
  2. Лишний объем в индексе поисковых систем;
  3. Такие страницы могут вводить в заблуждение посетителей;
  4. Очень часто такие страницы просто не оформлены.

Взяться за написание этого поста побудило тот факт, что эти страницы в Яндекс.Вебмастере оказались без мета-тегов.

Просто закрыть их в robots.txt не позволила структура ЧПУ.

Решение через код 404

Первое решение проблемы лишних страниц с вложениями стало с таким кодом в functions.php:

add_action("template_redirect", "disable_attachment_page");
 
function disable_attachment_page() {
  global $wp_query;
  if (is_attachment()) {
    $wp_query->set_404();
  } 
}

Суть: Видя страницу, на которой срабатывает функция is_attachment(), просим WordPress показать посетителю шаблон страницы 404.

Все работает, никаких нареканий нет, и владельцы сайтов довольны, но есть существенные минусы в этом подходе!

Недостатки:

  1. Ссылки на такие страницы (если они есть), автоматически становятся «битыми»;
  2. Возвращается только шаблон 404 страницы, но код ответа сервера все равно 200 (Ок);

Вывод: Решение плохое, не рекомендую его использовать никому.

Решение через перенаправление

add_action("template_redirect", "disable_attachment_page");
 
function disable_attachment_page() {
  global $post;
  if (is_attachment()) {     
    wp_redirect(get_permalink($post->post_parent), 301);  
  } 
}

Суть: попав на страницу вложения посетителя сразу перенаправляет на страницу или запись, к которой этот медиафайл прикреплен.

Крайне рекомендую принудительно прописать в функции wp_redirect() вторым параметром код 301 (постоянный редирект), потому как по-умолчанию отдается 302 (временный).

Таким образом, если вы случайно добавили медиафайл с ссылкой на страницу вложения — ничего страшного. И ссылки битой не останется, и посетители эту страницу не увидят.


Комментариев нет

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

*

*