Seo-Бизнес блог Progress-project

Все о создании, продвижении сайтов и заработке в интернете

Обновлённый дизайн блога Progress-project
logotip «Progress-project»
logotip «Progress-project»

Как убрать теги: #more, #comments, #respond на конце URL

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

Но я считаю существенным недостатком то, что при этом к адресу вашего поста добавляется значения «#comments» или «#respond» («когда вы со статьи перепрыгиваете в комментарии»).

Или к примеру когда вы публикуете новые статьи и хотите вывести анонсы на главную страницу, вы применяете тег «#more» («читать далее»). У вас также будет добавляться нечто похожее на «#more-123» («где цифры это ID вашего поста»).

Если на вашем блоге всё происходит именно так то давайте будем избавляться от этих #respond #more #comments.

Для этого нам понадобятся файлы для редактирования: post-template.php (чтобы убрать #more) и comment-template.php (чтобы убрать #comments #respond). Располагаются данные файлы на вашем хостинге в папке под названием «wp-includes».

Для большего удобства я советую вам использовать бесплатные программы: Notepad++ и FileZilla.

С помощью первой удобнее всего редактировать файлы. Я вообще советую при редактировании каких либо файлов производить все действия только в программе Notepad++ так, как WordPress очень чувствителен к нарушению кодировки. Если вы случайно открыли какой либо файл в стандартном блокноте Windows с расширением .txt, обязательно откройте этот файл заново в Notepad++ и сверху выберите в меню — «кодировки» — «кодировать в UTF-8 (без BOM)».

С помощью второй программы FileZilla. Вы без труда сможете редактировать требующиеся файлы прямо на вашем сервере, соединившись с ним по ftp доступу, но для не совсем опытных веб-мастеров я настоятельно рекомендую всегда делать резервные копии редактируемого файла на ваш компьютер, чтобы если вы, что то сделаете не так всегда можно было восстановить исходный вариант этого файла.
Теперь давайте вернёмся к нашей задаче.

Избавляемся от #more

И так, соединяемся с сервером в корневой папке в файлах вашего движка WordPress открываем папку wp-includes и ищем файл post-template.php, скачиваем его на компьютер или если вы уверены в своих знаниях сразу в программе FileZilla наведя курсор мыши на данный файл щёлкаем правой кнопкой мыши где далее из открывшегося меню выбираем пункт для редактирования просмотр и правка, если вы скачали данный файл на компьютер открываем его в программе Notepad++ для большего удобства советую воспользоваться поиском в этой программе, набираем нужное значение в данном случае это «#more» и редактируем файл, попросту выделяем кусок кода #more-{$post->ID} и удаляем это значение из файла.

У меня этот код выглядит так:

$output .= apply_filters( 'the_content_more_link', ' #more-{$post->ID}\" class=\"more-link\">$more_link_text", $more_link_text );
$output = force_balance_tags( $output );

У вас он может быть немного другим, это не важно нам главное удалить #more-{$post->ID}.

Вот так у меня получилось после редактирования:

$output .= apply_filters( 'the_content_more_link', ' \" class=\"more-link\">$more_link_text", $more_link_text );
$output = force_balance_tags( $output );

Избавляемся от #comments и #respond

Со значениями #respond и #comments, всё будет гораздо проще.
Аналогично открываем файл имеющий название comment-template.php и удаляем из кавычек значение #respond и #comments.

Вот вариант с #respond
До:

if ( 0 == $number )
echo get_permalink() . '#respond';
else
comments_link();
echo '"';

После редактирования:

if ( 0 == $number )
echo get_permalink() . '';
else
comments_link();
echo '"';

Вариант со значением: #comments.
До редактирования:

function get_comments_link( $post_id = 0 ) {
$comments_link = get_permalink( $post_id ) . '#comments';

После редактирования:

function get_comments_link( $post_id = 0 ) {
$comments_link = get_permalink( $post_id ) . ' ';

Вот так мы избавились от бесполезных нам и даже в чём-то вредных значений в ссылках на статьи наших блогов: #more ,#comments и #respond.

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

На этом сегодня я заканчиваю, но впереди у нас ещё много полезного, рекомендую вам подписаться на обновления блога, чтобы всегда оставаться в курсе новостей.
Всего доброго и до новых встреть!

С уважением, автор блога!
© progress-project
★Обновлено:2016-05-18

Введите свой e-mail:

Вы можете поделиться статьёй в социальных сетях:

Комментарии к статье

16 комментариевна “Как убрать теги: #more, #comments, #respond на конце URL”
  1. Николай:

    Здравствуйте, очень полезная и подробная статья, все понятно написано. У меня наверное не стандартная тема Вордпресс, так как у меня нет файла comment-template.php, есть файл comments.php но ни в нем, и в других файлах темы нету #comment-(номер коммента). который появляется в адресе страницы после отправки комментария на сайт. Может есть еще какие идеи как найти этот #comment-.

    Ответить
    • Administrator:

      Здравствуйте Николай! Очень рад видеть вас на блоге. Пожалуйста не волнуйтесь, наверняка тема вашего ресурса вполне стандартная. А всё дело в том, что данный файл: «comment-template.php», необходимо искать, не в файлах темы а непосредственно в вашем CMS, по адресу: abrek-ad-abra.ru/wp-includes/comment-template.php.
      Вот, как об этом говорится в статье: «Для этого нам понадобятся файлы для редактирования: post-template.php (чтобы убрать #more) и comment-template.php (чтобы убрать #comments #respond). Располагаются данные файлы на вашем хостинге в папке под названием wp-includes».

      Ответить
  2. Николай:

    НАШЕЛ!!! в файле comment-template.php убрал вот эту строку
    $link = $link . '#comment-' . $comment->comment_ID; все стало нормально.

    Ответить
    • Administrator:

      Николай, очень рад, что вы разобрались со своей проблемой! Но следует иметь в виду, что после обновления WordPress, всю операцию необходимо будет произвести заново.
      А вообще, сегодня поисковые системы вполне лояльно относятся к подобным URL. Поэтому я считаю, что не стоит сильно замачиваться по этому поводу.

      Ответить
  3. Николай:

    Спасибо за быстрый ответ. Да действительно искал в файлах темы, забыв посмотреть в CMS. Сейчас все нормально нашел нужный файл и строку в нем отвечающую за вывод #comment- в адресной строке. Удалил строку и адрес страницы стал нормальный. Еще раз спасибо.

    Ответить
    • Administrator:

      Пожалуйста, рад был помочь!

      Ответить
  4. Олег:

    Здравсвуйте. У меня не получилось убрать #respond.
    В своем файле comment-template.php я не нашел ни одной строки
    echo get_permalink() . ‘#respond’;
    Зато нашел много других #respond. Удаление любого или всех на дает результата.
    Версия WordPress 4.4.2

    Ответить
    • Administrator:

      Здравствуйте, Олег! Только что посмотрел, действительно со время написания статьи код немного изменился, но в прицепе задачу он выполняет одну и туже. В версии: 4.4.2, функция с необходимым вам значением, расположена в 1515 строке.
      Также хочу посоветовать вам, использовать: rel=canonical, для канонических страниц вашего ресурса.

      Ответить
      • Олег:

        В строке 1515 я тоже удалял ‘#respond’, но к сожалению не помогает. Все началось с того что я пытаюсь избавится от дублей страниц replytocom в древовидных коментариях с помощью 301 редиректа. На локальном сервере получилось, а вот на хостинге не работает.
        При чем на локальном сервере остается окончание #respond.
        Например, была страница:
        mysite.loc/blog/article/?replytocom=4#respond
        стала (после добавления строк в .htaccess)
        mysite.loc/blog/article/#respond
        Сейчас 1514 и 1515 строки
        if ( 0 == $number ) {
        $respond_link = get_permalink() . '';

        Ответить
        • Administrator:

          Олег, replytocom как вы наверное и сами понимаете немного другое нежели описанное в статье, на данную тему на блоге уже имеется статья. Что же касаемо: .htaccess, можно использовать вот такой вариант:

          RewriteCond %{QUERY_STRING} replytocom=
          RewriteRule ^(.*)$ /$1? [R=301,L]

          Но опять же, это лишнее перенаправление!
          Могу так же посоветовать прописать в funcions.php, следующую функцию:

          function enqueue_comment_reply() {
          if( is_singular() )
          wp_enqueue_script('comment-reply');
          }
          add_action( 'wp_enqueue_scripts', 'enqueue_comment_reply' );

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

          Ответить
          • Олег:

            Да, конечно, я понимаю что replytocom это не то о чем написана статья. Я просто описал свои дейсвия в надежде, что это поможет решить вопрос, который так и остался открытым 🙁
            P.S. настроить редирект получилось, остался только #respond.
            Спасибо за совет по поводу funcions.php . Я пока не силен в оптимизации и удалении дублей. Изучаю.

            Ответить
            • Administrator:

              Олег, после прочтения упомянутой статьи, вы навсегда сможете избавиться от replytocom, что же касаемо функции, здесь нет не нечего сложного, просто скопируйте её из комментария выше и вставьте в самый низ файла funcions.php вашей темы, до знака: ?>. Как я уже говорил, после этого при нажатии на кнопочку либо ссылку «ответить», Форма будет сама подъезжать к нужному комментарию. Нас не будет некуда перебрасывать и соответственно не будет создаваться и дубль. Дальше нам останется только удалить саму ссылку, чтобы раз и навсегда избавиться от replytocom, но об этом уже читайте в статье.

              Ответить
              • Артем:

                Добрый день. Все таки, так и не остался решен вопрос по поводу #respond в последней версии wordpress. Удален любой #respond в файле comment-template.php. А он все равно появляется при нажатии ссылки Оставить комментарий. Подскажите, пожалуйста, как решить такую головоломку.

                Ответить
                • Administrator:

                  Здравствуйте, Артём!
                  На сегодняшний день #respond, не несёт какой либо особой опасности, но если вы всё же беспокоитесь по этому поводу а описанный в статье способ вам не помог.
                  Первым делом укажите поисковым системам на канонические страницы вашего ресурса, пропишите дополнительную запрещающую директиву в robots.txt:

                  Disallow: /*?respond

                  или так:

                  Disallow: /*?*
                  Disallow: /*?

                  Так же, на блоге уже имеется статья, где мы полностью убираем ссылку из кнопки ответа, превратив её в «span», аналогично можно будет поступить и с кнопкой отправки комментария.

                  Ответить
  5. Алексей:

    Спасибо за статью — реально работает

    Ответить
    • Administrator:

      Здравствуйте Алексей, очень рад, что статья оказалась для вас полезной.

      Ответить

Ваш комментарий

Внимание! Перед тем, как вставить в комментарий: html, php либо JavaScript, преобразуйте его в HTML сущность!

» Подписаться на комментарии по RSS
Поиск по блогу

Введите свой e-mail:

ВКонтакте Google+ Facebook RSS-лента сайта abrek-ad-abra.ru

Топ комментаторов

Виктор(6)
seoonly.ru(4)
Иван(3)
Олег(3)
Николай(3)

© 2015-2017

SEO-Бизнес блог «Progress-project».

Все материалы, опубликованные на сайте: принадлежат автору и охраняются в соответствии с законодательством РФ.

При использовании материалов сайта гиперссылка на обязательна!



seo-блог