Поддержка Проблемы и решения Тег шаблона wp_list_pages

  • Приветствую всех.
    Помогите решить следующую проблему: Необходимо закрыть от индексации гуглом горизонтального меню навигации по отдельным статическим страницам сразу под шапкой блога, для этого требуется в ссылках на страницы прописать параметр rel=»nofollow».
    Меню навигации организовано через тег wp_list_pages, в следующем виде:

    `
    <?php wp_list_pages(‘title_li=&depth=1’); ?>
    `

    Нашёл эту функцию в файле post-template.php, но в PHP разбираюсь не очень хорошо, поэтому не смог найти, как именно формируется код самой ссылки на страницу. Подскажите пожалуйста, где и что надо изменить, что бы в конечной ссылке появился параметр rel=»nofollow»?
    Заранее благодарен.

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Можно добавить фрагмент в functions.php активной темы:

    function wp_list_pages_nofollow($output) {
    	return preg_replace('/(href=".*?")/', '$1 rel="nofollow"', $output);
    }
    add_filter('wp_list_pages', 'wp_list_pages_nofollow');

    Большое спасибо за подсказку, сейчас попробую!

    Ещё раз спасибо, функция работает, но не совсем корректно. Так, после вставки фрагмента кода в файл функций темы (functions.php) при попытке редактировать файлы темы, точнее — при попытке сохранить файлы после редактирования (кнопка — обновить файл) движок выдаёт следующее:

    Warning: Cannot modify header information — headers already sent by (output started at /home/directma/public_html/evro/wp-content/themes/Estetica/functions.php:333) in /home/directma/public_html/evro/wp-admin/theme-editor.php on line 75

    хотя — изменения всё таки сохраняются, и при возврате на предыдущую страницу всё отображается, как надо. Пытался вставить фрагмент кода в самом начале файла функций темы, но тогда ничего не происходит, и изменения не отображаются в исходном коде страницы, попросту — у ссылок нет атрибута rel=»nofollow».

    Вопрос такой: можно ли реализовать данную функцию как нибудь изящнее? Допустим — что бы в админ-панели при создании и администрировании статических страниц и новых рубрик стоял пункт nofollow и noindex, и при установленном флажке к ссылкам, ведущим на эти страницы, добавлялись бы эти атрибуты? Или может это возможно сделать через произвольные поля?

    Немного дополню предыдущий пост.

    У Вордпресса, при всех его неоспоримых достоинствах, есть один существенный недостаток: — при установленных темах и плагинах сайт на его основе похож на линкопомойку: все страницы ссылаются на все страницы, причём — по множеству раз. Можно конечно отключать архивы, по датам, и по тегам, но при этом существенно урезается функциональность. Можно ещё ставить плагины, закрывающие архивы и страницы логина и администрирования от индексации поисковиков, но проблемы это не решает.

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

    Поэтому, что бы построить чёткую ссылочную структуру сайта и блога на основе WordPress — приходится хорошенько поковыряться в движке, вручную закрывая от индексации страницы категорий, статические страницы, и прочие внутренние и внешние ссылки, не заточенные под релевантные запросы, что весьма утомительно. Потому как ни один из опробованных мной плагинов не решает этой проблемы хотя бы наполовину.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    1. Функция должна работать независимо от местоположения в functions.php. И не должна выдавать ошибку, если правильно её вставить — я проверял.
    2. Да, такая реализация возможна. Однако это уже другая задача, больше похожая на создание полноценного плагина.

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

    Подскажите пожалуйста, куда я могу обратиться с этой идеей, в какую ветку форума? Что бы можно было совместно обсудить и найти решения? т.е. — написать дополнения к движку?

    Atrax

    (@atrax)

    Ethical engineer

    Дополнения к движку — это и есть плагины и темы.
    Править сам движок — это плохая идея. Разговор о том, почему это плохая идея, повторяется на этом форуме со стабильной периодичностью.

    Но «хакер» же не читатель. «Сломать» — и дело с концом. А подумать?

    Уважаемый Atrax, а кроме критики и стёба какие нить конкретные и дельные предложения от вас услышать можно? Критиканов вокруг — как грязи. Адекватных предложений и решений — единицы.

    Ну так что — стебаться будем, или делом займёмся?

    Atrax

    (@atrax)

    Ethical engineer

    Уважаемый Atrax, а кроме критики и стёба какие нить конкретные и дельные предложения от вас услышать можно?

    Можно. Но не запросы вроде «хорошенько поковыряться в движке». Есть более правильные пути — я просто жду, пока вы это поймете.

    Мне в сотый раз вам пересказать, что при правке самого движка вы теряете возможность его без потерь обновлять? А не обновляя его — теряете безопасность. Я могу. Но тогда уже и вы не жалуйтесь на стеб и критику.

    Такие все умные, а с «Cannot modify header information» справится не могут. ФАК не для вас писали? Скромнее, юноша, а то от таких любителей переписать wordpress скоро не продохнуть будет.

    Между прочим, совет вам уже дали. А вы его отмели. Кто виноват? 🙂

    Блин, одна полемика, и никакой конкретики. Высказались? Легче стало?

    Советом я воспользовался, писал об этом, читайте внимательнее. Спасибо, кстати, Сергею Бирюкову, ЕДИНСТВЕННОМУ, кто дал на данном форуме толковый совет. Всем остальным — только государственными обвинителями работать.

    Однако — предложил развить идею, и встроить данную функцию в сам движок, в ВИДЕ ОБНОВЛЕНИЯ СЛЕДУЮЩИХ ВЕРСИЙ (!!!), насчёт «поломать» — никаких предложений не было, потому как и сам знаю, чем это черевато.

    Если Вас НЕ устраивает это предложение — то тогда давайте создадим ПЛАГИН, но только — что бы он ПОЛНОСТЬЮ РЕШАЛ ПРОБЛЕМУ ГРАМОТНОГО ПОСТРОЕНИЯ ссылочной структуры сайта или блога на основе WordPress.

    Призываю Вас перейти от профессионального обвинительства к конструктивному обсуждению и решению проблемы. А именно: Как должна выглядеть ОПТИМАЛЬНАЯ ссылочная структура сайта, что бы максимально эффективно распределять и аккумулировать ссылочный вес между релевантными страницами, полностью исключая из индекса НЕ релевантные; и как и в каком виде эту структуру можно реализовать — с помощью включения в обновление движка в новых версиях, или с помощью отдельного плагина.

    Ну так что — обсудим, или как?

    Atrax

    (@atrax)

    Ethical engineer

    Конечно, обсудим 🙂

    предложил развить идею, и встроить данную функцию в сам движок, в ВИДЕ ОБНОВЛЕНИЯ СЛЕДУЮЩИХ ВЕРСИЙ

    С этим будет большая проблема. У разработчиков уже давно не такая позитивная реакция на предложения аудитории и глубоко свой путь развития. Поэтому ждать этого от них — все равно, что манны небесной. Отметаем…

    давайте создадим ПЛАГИН, но только — что бы он ПОЛНОСТЬЮ РЕШАЛ ПРОБЛЕМУ ГРАМОТНОГО ПОСТРОЕНИЯ ссылочной структуры сайта или блога на основе WordPress

    Давайте создадим.

    Насколько я понимаю ваши пожелания, вы хотите не уменьшить количество разных ссылок, а убрать с них вес, чтобы его не терять. Если я неправ, поправьте меня, но мне кажется, что, даже при наличии активных ссылок, файл robots.txt выносит из поиска страницы, которые вам не нужны, если их там явно прописать. Плагином ли, ручками — не суть. Это первое решение.

    Дальше. Как уже упоминалось, на вывод страниц можно поставить фильтр. Чтобы не «выносить» все подряд, в функции фильтра можно проверять саму ссылку по какому нибудь списку исключений, например. И не ставить nofollow (или наоборот — только им и ставить). Написать плагин, чтобы в админке появлялась страница со списком этих исключений тоже недолго. Это второе решение.

    А именно: Как должна выглядеть ОПТИМАЛЬНАЯ ссылочная структура сайта, что бы максимально эффективно распределять и аккумулировать ссылочный вес между релевантными страницами, полностью исключая из индекса НЕ релевантные

    Автоматическое решение потребует четкого понимания механизмов индексации, а это территория, на которой я не чувствую себя хоть сколько-нибудь уверенно. Но ничего невозможного нет.

    Готовое решение можно попытаться поискать, написать самому или заплатить специалисту. У нас есть для этого специальный форум. Тут все дело в том, что это уже не «совет на форуме», а серьезная работа, которую можно делать только при наличии заинтересованности.

    У меня, к сожалению, нет ни времени, ни мотивации этим заниматься, но мне кажется, что указать путь решения проблемы тоже чего-то стоит.

    Извините, что вмешиваюсь. А разве нельзя все то закрыть (индексацию) в robots.txt?

    Для чёткости и ясности, а так же для привлечения к обсуждению новых участников, предлагаю открыть новую ветку (т.к. эта себя исчерпала), и там уже продолжить обсуждение.

    Сейчас создам новую ветку форума, продолжу там. Называться будет — «Создание эффективной ссылочной структуры блога». Насчёт предыдущего поста:

    Извините, что вмешиваюсь. А разве нельзя все то закрыть (индексацию) в robots.txt? ?

    Фалом robots.txt можно закрывать от ИНДЕКСАЦИИ только ЦЕЛЫЕ СТРАНИЦЫ, к тому же — как я думаю — это не гарантирует запрета передачи внутренними ссылками на эти страницы ССЫЛОЧНОГО ВЕСА, что является ПЕРВООЧЕРЕДНОЙ ЗАДАЧЕЙ, т.е. — страницы НЕ проиндексирована поисковиком, а ссылочный вес по ссылке на неё ПЕРЕДАЛСЯ, в результате — растрачен в пустую.

    К тому же — как быть, если страница должна оставаться в индексе, а вот ссылки с неё надо спрятать от поисковиков, но в то же время — что бы они были доступным пользователям (для удобства и функциональности)?

    В общем — тема обширная, и требует совместного обсуждения.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Как быть, если страница должна оставаться в индексе, а вот ссылки с неё надо спрятать от поисковиков, но в то же время — чтобы они были доступным пользователям (для удобства и функциональности)?

    Можно использовать nofollow как мета-тег.

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Тема «Тег шаблона wp_list_pages» закрыта для новых ответов.