Как убрать страницы вложений – WordPress
Всем привет! Сегодня расскажу как улучшить видимость в поисковиках убрав страницы вложений. Не все знают, но CMS WordPress создаёт отдельные страницы для всех загружаемых медиафайлов – изображений, файлов и пр.
Как следствие эти пустые страницы (например с одной картинкой) появляются в поиске и затрудняют SEO продвижение сайта. Выглядят эти ссылки как правило так – сайт/категория/название поста/attachment/название файла/.
Вот для примера скрин на котором видно что у меня только с одной статьи несколько таких страниц появилось.
Может быть у кого то иначе – суть от этого не меняется и страницы эти никакой практической пользы не несут, как для посетителей, так и для вебмастера.
Яндекс со временем из за переадресации всё равно удалит их из поиска, а вот гугл скорее всего так и оставит и благодаря этому все Ваши статьи имеющие вложения будут находиться в поиске по большему количеству запросов. Поэтому с этой точки зрения редиректить на основную запись также будет лучшим решением.
В любом случае если Вы нашли этот пост то вероятно уже знаете что это за страницы вложений и для чего лучше от них избавиться, а поэтому перейду непосредственно к описанию способа. Точнее их два:
Убираем страницы вложений при помощи .htaccess
Это работает насколько мне известно не у всех, но если не хотите редактировать шаблон то можете попробовать. Лично я воспользовался вариантом №2. Итак, чтобы установить редирект с картинок и прочих вложений на родительскую запись нужно в файле .htaccess
прописать следующее:
RewriteRule (.+)/attachment /\ [R=301,L] RewriteCond %{QUERY_STRING} ^attachment_id= [NC] RewriteRule (.*) $1? [R=301,L]
Кстати для вставки кода в текст воспользуйтесь плагином SyntaxHighlighter Evolved – инструкция здесь.
Убираем страницы вложений при помощи functions.php
Это решение лично для меня оказалось удобнее учитывая что способ со .htaccess вообще не сработал)
В файлах Вашего шаблона найдите файл functions.php, кликните по нему и где нибудь внизу вставьте функцию, вот код:
add_action('template_redirect', 'template_redirect_attachment'); function template_redirect_attachment() { global $post; // Перенаправление на основную запись: if (is_attachment()) { wp_redirect(get_permalink($post->post_parent)); } }
Вставлять его необходимо перед закрывающим тегом «?>», если не видите такого то просто в самый конец. После этого нажимаете “Обновить файл”, см. скрин ниже.
Оба описанных способа несложные, но тем у кого не стоит дочерняя тема советую настраивать через .htaccess дабы не потерять все изменения при ближайшем обновлении темы.
Надеюсь этот короткий пост поможет Вам решить данную проблему 🙂
Очень полезно и на простом языке. Попробую сделать самостоятельно