студия занимательная МИХАЛИКА
! Михалика - запросто с WordPress:
доступная ручная работа по правилам оптимального интернет(а)
Здравствуйте !

издатель:   в теме: HTML-CSS-PHP
студия занимательная МИХАЛИКА

Как избавиться от страниц вложения медиафайлов 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://complitra.ru/2015/
{
wp_redirect(home_url(), 301); // редирект - перенаправление домой - home_url или сделать url_404
exit;
}
}
add_action('template_redirect', 'sar_attachment_redirect' ,1);
add_action('template_redirect', 'sar_archive_redirect' ,1);
/*** редирект со страниц архивов ***/

 

 

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

 

 

 

…и ещё:

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

 

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

 

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

 

 


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

 


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


 

 


Если что-то не ясно, спрашивайте. Помогу… в чём дюжу.
Вместе мы многое сможем! Берегите себя и свой век - mihalica.ru


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


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

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

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