возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено: 2024-02-13 в теме: Контент, шапка site
Запросто с WordPress создание и продвижение сайтов ATs media

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

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

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

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

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


 

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

 

 

 

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

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

 

 

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

 

 

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

 


подписка feedburner Online консультация по настройкам и созданию сайтов на WordPress

 

 

 

 

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

 

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

 

 

 

Как удалить страницы вложения медиа-файлов - 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 Online консультация по настройкам и созданию сайтов на WordPress

 


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


 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...





Нажатия на кнопочки определяют Ваше высокое гражданское сознание

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

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

  отныне доступен плагин: ats privacy policy ©


  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. Скажите, а если картинка будет вести редиректом на страницу статьи, то будет ли эта картинка в поиске отображаться? Страницы с редиректом Яндекс из поиска исключает.

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

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

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

  7. Добрый день, а это как-то повлияет негативно на индексацию ? Фото же индексируются ?

    Ответить - Анатолий

    • Что, это?
      Для того и избавляются от страниц вложения… чтоб целесообразнее было для сайта…

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

  8. Просто супер!!!!
    А я голову сломал, как решить проблему на сайте…
    Спасибо!

    Если бы ещё найти решение, чтобы эти страницы изначально не создавались и не попадали в индекс.
    Может сможете помочь?

    Ответить - Павел

    • Не за что…
      На новом сайте возможно и такое (“чтобы эти страницы изначально не создавались и не попадали в индекс”) решение…
      Только какой смысл… если есть код?
      P|S
      я убрал вашу ссылку: площадкам не по теме блога нельзя просто так линкать)

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

      • Михаил, а можете предложить Ваше решение проблемы, чтобы изначально эти страницы не создавались и не попадали в индекс?
        Т.к. код, это хорошо, но как я понимаю, тем самым создаются лищние редиректы, что не совсем правильно.

        И ещё 2 вопроса:
        1) Сейчас код редиректит на Главную страницу. А возможно, чтобы редиректил на страницу, к которой относится картинка?
        2) Удалятся ли страницы из индекса после установки этого кода и в какие сроки?

        Спасибо за ответы заранее, Михаил.

        Ответить - Павел

        • 1 – это делать не Целесообразно! потому что функционал аттаче нужен для правильной работы сайта!! А посему, для того, чтобы реализовывать подобные вашему запросу фичи – нужно понимать: что делаешь, для чего и как…

          Т.к. код, это хорошо, но как я понимаю, тем самым создаются лищние редиректы, что не совсем правильно

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

          Сейчас код редиректит на Главную страницу. А возможно, чтобы редиректил на страницу, к которой относится картинка?

          Правильно настроенный код и должен редиректить на страницу статьи, для которой картинка…

          В статье описаны два варианта кодов… 1 – // Перенаправляем на основную запись: Т.Е редиреткт на статью (для коей картина)

          …и 2 вариант в финале статьи. Это более универсально. Однако, этот код нужно настраивать ПОД СЕБЯ (туда, куда нужно редиректить)… потому что код ещё редиректит всевозможные архивы сайта…

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

        • По картинкам: 2-й код делает редирект на страничку поста, если картинка привязана к посту, если же не привязана, просто болтается – тогда редирект идет на главную. Так у меня работает второй код. Первый имеет недостаток – если картинка не привязана к посту, отдает ошибку – “невозможно загрузить страницу”. Так что второй лучше, универсален.

          Ответить - Anatoliy

          • Эти оба кода – готовые решения. Хотя любой из них запросто возможно перестроить под свои конкретные идеи и цели…

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

  9. Спасибо, Михаил, за столь подробное изложение.
    С Вами приятно иметь дело ))

    Ответить - Павел

    • Вам Спасибо! за коммент и вопросы… в нём))
      “”кто задаёт вопросы – тот непременно что-то узнаёт””

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

  10. Здравствуйте!
    Спасибо!.. очень выручили… код работает. теперь пробую этот код под свои желания настроить.

    Ответить - Лера

    • Пожалуйста, Лера!
      Спрашивайте, коли что неясно)

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

  11. Спасибо!

    Ответить - Danya

    • Пожалуйста, Danya!..

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

  12. Спасибо большое за статью. Очень помог код удалить кучу ненужных дублей.

    Ответить - Екатерина

    • Екатерина, на здоровье, коли так))

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