Удаляем тега #more из ссылки на пост WordPress

Итак, как было рассказано ранее, на сайте появились категория записей «Личный опыт» в которую войдут посты специфические. Данные посты исключительно будет рассказывать о решениях возникших разных проблем и нелогичностей лично мною при создании сайта на WordPress.Хотя CMS WordPress достаточно распространенный и популярный движок, но он довольно капризный, и иногда выкидывает такие факусы, которые встречается не всеми.

Об этом было рассказано также на странице «Лично пробованные», которая и посвящена данной рубрики Вот например, недавно, я из-за адаптации шаблона решил поменять тему и установил hiero. С первого взгляда — ничего шаблон простой, адаптивный, и в минималистическом стиле.

Честно говоря сначала я не хотел поменять шаблон Вордпресс на полпути (уже было написано и опубликовано около 150 постов). Думал пользоваться для этого плагином, но потом оказалось, что это уже изживший довольно старый способ. Да и плагины создают адаптированные версии для мобильных не слишком прилично. Поэтому установил я шаблон Hiero и занимался публикацией постов, и вдруг заметил, что ссылки на посты в браузере стали какими-то странными, а именно в виде:  

Странный вид ссылки

//hostingtop100.ru/kak- oczenivayut-tematicheskih-vhodyashhih-ssylok-poiskovye-sistemy/#more-1634

Как стало обидно, дело в том, что в настройках «Постоянных ссылок» я применяю префиксы /%postname%/ из-за чего ссылки получаются в виде:

://hostingtop100.ru/kak-oczenivayut-tematicheskih-vhodyashhih-ssylok-poiskovye-sistemy

Эта нормальная ссылка на пост

Но вместе с /#more-1634 эта же уже была другая ссылка на один и тот же пост. Улавливается мысль? Это же дубль постов?!

При том это неприятная ситуация происходило при нажатии на пункт «читать далее». А вот по переходу по заголовку статьи получалось нормальная ссылка. Короче я начал искать решения данной проблемы в Интернете и у «умных людей» узнал, что для этого есть четыре способа. Первые два способа из них меня не устраивало, потому, что в обоих случаях нужно было вставить какой-то код в файл functions.php.

Я никогда не люблю трогать данный файл и никому не советую, из-за чего начал думать о других двух способах. Третий способ предусматривал пользоваться для удаления данного тега из ссылки с помощью плагина Remove More (при этом этот вариант был рассмотрен для новичков).

Но данный метод меня не устраивал, из-за того, что

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

Поэтому я выбрал четвертый вариант, и, по-моему самый разумный вариант. В этом случае нужно убрать кусочек кода в файле post-template.php. Нужно отметить, что данный файл находится в папке wp-includes. Рекомендуется удалить кусочек кода в виде: #more-{$_post->ID} в функции генерирующую полный запись блога на Вордпресс. Данная функция примерно в таком виде:

$output .= apply_filters( ‘the_content_more_link’, ‘ <a href=»‘ . get_permalink( $_post ) . «#more-{$_post->ID}\» class=\»more-link\»>$more_link_text</a>», $more_link_text );

Здесь нам нужно удалить кусок кода #more-{$_post->ID}, только нужно быть очень внимательно, кавычки и слеш остаются.

Итак, я открыл папку wp-includes и начал редактировать файл post-template.php. Для облегчения задачи и поиска кода #more-{$_post->ID} воспользуемся Ctrl+F.

Редактируем файл post-template.php

Здесь еще раз важно обратить внимание на то, убирается только кусок кода «#more-{$_post->ID}\» кавычки и слеш остаются, т. е. удаляется жирная часть.

Итак, удаляем фрагмент кода потом закрываем файл с сохранением, и разумеется, все в порядке. Теперь наши ссылки будут выводиться без этого хвоста #more.