! Запросто с WordPress - доступная ручная работа по правилам оптимального интернета
...здесь Ваша реклама.?.
Здравствуйте !
написано: — 
отредактировано: 2017-05-08
издатель:  в теме: Контент, шапка site: кодингS  реплики: 23 комментария
 
Запросто с WordPress - студия ATs media fashion Reception WordPress golden

Как избавиться от страниц вложения медиафайлов attachment — WordPress

Такая коротенькая заметка о том, как в публикациях сайта на WordPress избавиться от страниц вложения медиконтента: такие странички ваш сайт (на cms WordPress) будет генерировать для каждого добавленного фото (вообще всего добавленного медиаконтента) — рассмотрим пример с картинками.

Чем attachment странички вредны?? а тем — что, определим так, создают дублирующие адреса основного url статьи (вред дубликатов, думается, известен).

Ну, во всяком случае, споров по поводу конкретно нынешних дублирующихся адресов хыть отбавляй! — однако — как ни верти закавыку, а целесообразнее избавиться от бессмысленных страничек вложения.

Что жж, рассмотрим все минусы…


 

attachment.php что это за штука

 

 

 

Ничего особенно — обычный файл темы, — кстати сказать, относится к необязательным файлам — что мы и докажем далее по тексту!

Во-первых, за всё отвечает функция аттач wp_get_attachment_image(). А во-вторых… давайте приступим к делу…

 

 

Многие советуют добавлять attachment.php в директорию шаблона, если такового в арсенале нет. Я сомневаюсь в его целесообразности в шаблоне… и — не добавляю. Считаю это бессмысленным занятием, особливо касаемо нынешней темы.

 

 

Если хотите добавить — добавьте, вреда не будет. Да и тем паче в скорости станем подробнее разбираться с файлами шаблона — будем учиться создавать свою собственную тему: полностью адаптированную к запуску проекта! …нелишне подписаться:

 


подписка feedburner МИГ подписки - ВРЕМЯ знаний!!

 

 

 

 

Ну, давайте рассмотрим пример:

 

Итак, зайдите к себе в админку в раздел медиафайлы «Библиотека файлов», откройте любую картинку. Вот фотка для примера:

 

 

 

Как удалить страницы вложения медиа-файлов - WordPress

 

 

Кликнем по ссылке «Посмотреть страницу вложения» Что получилось?

Дело в том, что результат может быть у всех разным, ибо используемые шаблоны много отличны друг от друга. А посему, дабы не запутаться, предположим, что в нашей исследуемой теме файла attachment.php. нет.

 

 

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

 

…допустим, в статье используется 2 картинки — у каждой из них будет своя собственная страница вложения удалить которую, вот наша цель!

…т.е самый главный url статьи и, соответственно 2-м фоткам, пара вредных добавочных, как докладывалось выше.

 

 

Теперь вам примерно ясен один из вариантов генерирования дублей адресов-страничек машинкой WP..!

 

 

 

По порядку:

 

К примеру, (для тех, у которых файла аттаче в теме не было) добавим пустой файл attachment.php. Просто создадим и поместим в директорию шаблона.

 

В этом случае, после перехода на страничку вложения картинки, у вас откроется «пустое окно браузера» — как бы неплохо, но !! снова посмотрите в адресную строку — адрес перехода останется прежним — длиннющим и смешанным! — а это не хорошо: ведь вроде бы адрес из админки никуда не ведёт, но урл-то есть!!!! а это и есть самая главная и вредная закавычина.

 

 

Важно: если вы решили добавить пустой файл attachment.php в корень своего шаблона, проверьте — что за чудо-страничка откроется, когда вы переходите по такой ссылке:

 

http://домен.ru/wp-content/themes/шаблон/attachment.php

 

или такой

 

http://домен.ru/wp-content/themes/шаблон/

 

коли откроется окно с непонятным содержимым, то вам просто необходимо прочесть статью повествующую о правилах защиты сайта на вордпресс

 

Вот как бы и сегодняшняя статья пришлась кстати тем, которые упустили заботу по защите сайта) — таким способом тестится любая директория сайта.

 

 

 

 

 

Как удалить страницу вложения медиаконтента и выполнить редирект на основной адрес статьи

 

 

 

Вот чудесный код, который нужно добавить в файл функций вашей активной темы:

 

 

/*** удаляем стр. вложения медиа КАРТИНКИ ***/
add_action('template_redirect', 'template_redirect_attachment');
function template_redirect_attachment() {
global $post;
// Перенаправляем на основную запись:
if (is_attachment()) {
wp_redirect(get_permalink($post->post_parent));
}
}
/*** ФИН удаляем стр. вложения медиа КАРТИНКИ ***/

 

 

После того как код удаления страничек вложения медиафайлов будет прописан, проверяйте отработку сего лихого кода.

 

 

 

Итог должен быть таким:

 

…после нажатия на ссылку «Посмотреть страницу вложения» вас — по функции правильной отработки добавленного кода — непременно перебросит на основную каноническую страничку записи — т.е ту страничку, которая имеет уникальный канонический URL адрес и в которой же используется медиа.

 

 

 

в плане экса и эпилог:

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

 

1 — (если у вас файла attachment.php нет) — откроется как бы сама запись и, например, фотка на пустом фоне, безо всякого текстового статейного содержимого!  Кстати, это и есть лишняя страница, путающаяся с основным урлом.

 

2- (если файл attachment.php добавлен) — откроется пустое окно браузера!

 

Мораль: читайте по статье чуть выше.

 

 

Спрашивается: зачем сам файл attachment и  это пустое окно?? —

…после прописки вышепоказанного кода, «вас» из «библиотеки медиафайлов» безо всяческих заморочек редиректирует на главную страницу записи.

 

 

Никакого пустого окна и дополнительной холостой страницы вложения медиафайла быть не должно!

 

 

 

И коли у вас до сегодняшнего дни набралось навалом дубликатов ввиду страничек вложения (или бессмысленных url-адресов, как угодно) мешающих продвижению вашего проекта, то — после нынешних манипуляций — избавление от них пойдёт своим чередом)

 

 

 

 

как настроить редирект со страничек архивов, дат публикаций, записей автора на главную страницу

 

 

 

 

Этот код, как понимаете, универсальнее показанного выше (в контексте нынешней статьи): а именно — редиректирует на главную со страничек всевозможных архивов и — оптимизирует (в нашем случае) работу функции аттач wp_get_attachment_image()

 

То есть соединят в себе две полезные функции воедино! — показанную чуть выше и…

 

А посему решил добавить сюда ещё один полезный вариант редиректа с ненужных индексируемых страничек. Такие странички, создающие кучу дублей, и люди толкуют, очень вредны для продвижения.

 

Я не знаю на сколь силён вред, но лично на некоторых сайтах этим чудо-кодом замечательно пользуюсь, ибо ясно одно: коли у админа нет острой необходимости показывать посетителям архивы по датам публикаций, и вообще на вашем сайте/блоге автор только один, спрашивается — зачем мне (как единогласному админу)) масса подобных страничек?

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

 

 

/*** редирект со страниц архивов и аттачемнтоооо ***/
function sar_attachment_redirect() {
global $post;
if (is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent != 0) ) {
wp_redirect(get_permalink($post->post_parent), 301); // перенаправление на постоянную страницу загруженного файла
exit;
} elseif (is_attachment() && isset($post->post_parent) && is_numeric($post->post_parent) && ($post->post_parent < 1) ) {
wp_redirect(get_bloginfo('wpurl'), 302); // перенаправление отдельного документа или картинки post/page
exit;
}
}
function sar_archive_redirect()
{
global $post;
if (is_date()) // ID необходимых для обработки массивов - if (is_archive()) http://домен.ru/2015/
{
wp_redirect(home_url(), 301); // редирект - перенаправление домой - home_url
exit;
}
}
add_action('template_redirect', 'sar_attachment_redirect' ,1);
add_action('template_redirect', 'sar_archive_redirect' ,1);
/*** редирект со страниц архивов ***/

 

 

Всё что нужно сделать после прописки вышепоказанного кода, так это закомментировать (или удалить, коли юзали) код, показанный выше!

 

 

Эта статья о том как убрать тег rel=attachment wp-att-хххх из атрибутики загружаемой картинки (редактор медиафайлов).

 

 

 

…и ещё:

Прописка кода в файл functions.php, это дело хорошее !! Однако не всё и вся стоит в него пихать – правильнее (и для скорости загрузки в том числе) сгруппировать некоторые циклы кода в оформленном плагине: легко, надёжно и правильно в плане создания сайта.

 

Все доказательства «ЗА» читать:

 

Вот ссылка – как сделать собственный плагин WordPress – добавочный файл my-functions.php

 

 


подписка feedburner МИГ подписки - ВРЕМЯ знаний!!

 


На этом моя повесть нынче решительно окончена...!


 

 


Благодарности)) и вопросы в комментариях - помогу… в чём дюжу
А также Вы можете просто:
Нажатия на кнопочки определяют Ваше высокое гражданское сознание
ещё статьи по теме:

меточная навигация:


Комментарии © 23 к статье: Как избавиться от страниц вложения медиафайлов attachment — WordPress

  1. Во наговорил. Читал, вроде как и в теме, но не фига не понял При прописке http://домен/wp-content/themes/шаблон/attachment.php у иеня открылась страничка 404. Но я думаю что другой и быть не должно. Значит все в прядке? Или нет?

    Ответить - Андрей

    • Привет!!
      404 открылась — в общем, нормально ! если гнать по кочкам все возможности аттач и сопутствующие связки… ибо 404 «ошибка» и для Африки ошибка!
      У Вас по kosolapovblog.ru/wp-content/themes/tema-2/attachment.php открылась «пустое окно» !!
      В статье как раз и говорится, что вариант «пустого окна» НЕ одно и то же с 404-й ошибкой.
      404-я (но — ОШИБКА !!) — в отличие от «доступ запрещён» или «пустое окно» — это несколько разные весчи: даже в плане Русского языка))

      ps| меня иногда просят настроить редирект с 404-й на главную…
      НО — по сути это белибердовая идея: т.к получается, что 404-ю стр. мы САМИ УКАЗЫВАЕМ КАК ГЛАВНУЮ!
      Вот об этих отличиях ошибок и статья как раз, — в общем-то, чтобы эти простые «сопливые» вещи выполнять осознанно в коде — безо всяких плагинов в этом случае.

      А чтобы не морочиться, берётся из статьи финальный (универсальный)) код и в функ… и всё потом замечательно бывает на сайте!
      …единственное — какие-то свои условия is_name() дописать, и готоводело!

      Ответить - Михаил

      • Ну да, это я копнул не туда, действительно пустая страничка. Значит все нормально :)

        Ответить - Андрей

        • …бывает… и такое exercise отпляшешь…

          Ответить - Михаил

  2. Если картинка не прикреплена никуда, сайт долго думает и выдает ошибку — Сайт выполнил переадресацию слишком много раз.

    Ответить - Николай

    • Здравствуйте Николай!
      Я совсем не понял вопроса в Вашей реплике (кроме: «бесконечная переадресация» — ошибка)
      …и при чём тут не прикреплённая картинка? если Вы переадресуете «откуда-то» «куда-то»??
      Т.е со страницы аттач на главную, например!
      С каким кодом у Вас закавыка, в статье их два..?

      Ответить - Михаил

      • с первым, когда картинка прикреплена допустим в товару то все нормально, а когда она просто загружена, то редирект делать не куда!

        Ответить - Николай

        • а когда она просто загружена, то редирект делать не куда!

          — а зачем в таком случае редирект? по каким ссылкам?
          Я снова ничего не понял! …у Вас WOOC, что ли..? какая тема..?
          Первый код призван для исключения (скажем так) страничек вложения (дублей) прикреплённой к статье картинки,и, соответственно, при переходе по ссылкам вложений аттач — редиректирования на саму страницу статьи с её же картинкой (без стр. вложения !! — и соплей-дублей). А если не к чему не перекреплена, то куда редирект-то? в Вашу админку или куда. Хотите-то?
          Если Вам нужен банальный редирект из админки или переходов по сформировавшимся ссылкам аттаче (при просмотре стр. вложения) воспользуйтесь вторым кодом: первый не нужен в таком случае — второй универ…
          Это, если я Вас как-то правильно понял.
          Вы сформулируйте по подробнее проблему, что ли…

          Ответить - Михаил

  3. Наконец то я нашел способ убрать эти дубли. Спасибо огромное. Месяц искал решение,толком не мог обьяснить в чем проблема. Ваши инструкции должны быть в закладках!)

    Ответить - Александр

    • Пожалуйста, Александр!
      Когда-то я тоже не мог справиться с дублями))
      Заходите ещё и впредь!

      Ответить - Михаил

      • Поначалу все было нормально, при нажатии «посмотреть страницу вложения» открывалась полностью статья,а не картинка как раньше. Но сейчас смотрю что то не так. Ничего не открывается и пишет:

        Страница ********** не работает

        Сайт *********** выполнил переадресацию слишком много раз.
        Удалите файлы cookie..
        ERR_TOO_MANY_REDIRECTS

        Куки чистил несколько раз уже

        Ответить - Александр

        • Какой вариант кода аттач используете? первый или второй…

          Поначалу все было нормально, при нажатии «посмотреть страницу вложения» открывалась полностью статья,а не картинка как раньше. Но сейчас смотрю что то не так. Ничего не открывается и пишет:

          Страница ********** не работает

          Значит по началу всё сделали правильно! коли работало.!.

          Сайт *********** выполнил переадресацию слишком много раз.

          Такое частенько бывает /циклическая переадресация/: в основном из-за какой-то совершённой веб мастером последующей ошибки в правке кода, (всяких картинок и т.п — статьи), или —

          Куки чистил несколько раз уже

          Куки, это хорошо! Однако нужно и о кэше не забывать — браузера и (плагина кэширования, если установлен) плагин почистите…
          ps|
          В процессе правки кода сайта, — кэш лучше вообще отключать: везде!

          Ответить - Михаил

  4. В статье вы пишите:

    как настроить редирект со страничек архивов, дат публикаций, записей автора на главную страницу

    но приведенный вами код не делает редиректа со страницы записей автора на главную страницу! Меня интересует именно функция редиректа с архивной страницы записей автора на главную, вы можете помочь?

    Ответить - Дмитрий

    • Здравствуйте Дмитрий!
      Всё просто: добавляйте (например, к уже существующему is_date()) условие is_author() и пр. и пр.

      Ответить - Михаил

      • Да спасибо, я то разобрался как дописать код. Вы в статье добавьте, а то у читателей будут непонятки.

        Ответить - Дмитрий

        • Конечно же, да!! полезно добавить в статью (или здесь хотя бы) пример прописки условий «запрета».

          Спасибо, Дмитрий, за дельное предложение!
          Я — комм-пояснение перенёс в следующий комментарий, чтобы места больше было…

          Ответить - Михаил

  5. Для того, чтобы добавить свои задачи для редиректа, нужно:
    …в строку с условием (is_date() добавить через or необходимые параметры, например, так:

    global $post; 
    if (is_date() or is_author()) // и пр. и пр... к примеру и or is_year()
    {

    Здесь, мы создали условие для всех страничек авторов or is_author() — т.е редирект с этих страничек на «главную».
    Таким образом возможно организовать всё в соответствии со своими требованиями и желаниями.

    Ответить - Михаил

    • 1. Я дилетант-самоучка в PHP поэтому сделал немного не так, я сделал условие отдельным кодом, но is_date() or is_author()) гораздо проще если делаете общий редирект на главную к примеру. А если хотите архивы по датам редиректить на главную, а архивы записей админа сделать ответ 404, то надо делать именно отдельным кодом.

      2. Вы пишите:
      wp_redirect(home_url(), 301); // редирект - перенаправление домой - home_url или сделать url_404
      подскажите пожалуйста, как сделать 404 ошибку? Не разберусь как написать чтобы был редирект на страницу с ошибкой?

      Ответить - Дмитрий

      • 1 — можно и отдельным кодом.
        2 — я там в коде поправил насчёт 404 ошибки (удалил вариант, чтоб не путаться) — это не совсем правильно (показано было для примера): ненужны принудительно-бесполезные редиректы на ошибочную 404-ю — те и естественным образом наберутся…
        Относительно функций кода статьи, — лучше перенаправлять на заглавную!
        У меня уже здесь (в блоге) спрашивали, как сделать на 404-ю..? А потом уже потребовалось с некоторых страниц 404-й ошибки сделать на главную — это конфликты в дальнейшем!! Таким образом (в этом случае) получается 404-я как бы «главная»! Это, по-моему, (и со стороны SEO) — глупость.
        А с какой страницы нужен редирект Вам?

        У меня где-то код лежит о 404-й (но, к сожалению, не помню) попробую отыскать.
        ps|
        Что убрать в Вашем комментарии конкретнее (не понял)?

        Ответить - Михаил

        • Просто я смотрю у вас в блоге настроен именно редирект на 404 ошибку с архивов записей админа. К сожалению скриншот прикрепить не могу. Правильно ли будет сделать так? wp_redirect( '404' );

          А удалить нужно в моём комментарии с вопросом, в строке:
          wp_redirect(home_url(/udalyaem-stranitsyi-vlozheniya-mediafaylov-wordpress/), 301);
          удалить текст:
          /udalyaem-stranitsyi-vlozheniya-mediafaylov-wordpress/
          я не знаю как он туда попал :)))

          Ответить - Дмитрий

          • Сделать можно и так, как предложили Вы…

            У меня нет никакого редиректа на 404 (стр. ошибки) со страниц автора!! Это банальная страничка ошибки //mihalica.ru/author/ — проверять нужно с конкретным именем автора по id is_author(): получится главная страница.

            Здесь у меня работает именно код, показанный в статье (чуть подстроенный под себя).

            Ответить - Михаил

  6. Скажите, а если картинка будет вести редиректом на страницу статьи, то будет ли эта картинка в поиске отображаться? Страницы с редиректом Яндекс из поиска исключает.

    Ответить - Михаил

    • Конечно же будет и очень замечательно отображаться в поиске: но исключительно с привязкой к статье! что нам и нужно (по теме этого поста). Главное — мы избавимся от дублирования контента посредством картинки. …при всём при том (!) не выставляя запрета индексации фотки!
      А то, что Я. исключает странички с редиректом, это иная тема… и так просто сказать «что он исключает любые странички с редиректом» нельзя!

      Ответить - Михаил

Поделитесь соображениями: Ваши мысли очень важны! $ правила комментирования ©

Внимание! Обязательные поля помечены *

 для диалога необходимо принять правила конфиденциальности и пользовательского соглашения *
Яндекс.Метрика