Как задать кнопку назад на предыдущую страницу?
Уважаемые знатоки, вопрос наверное древний как мир, но тем не менее, ответа толком не нагуглил.
Нужно внедрить кнопку назад к предыдущей странице, но с условием, что на главной эта кнопка обязательно должна скрываться.
Другими словами, кнопка должна выводиться на всех страницах, кроме главной.
Я испробовал, кажется все варианты из инета, но желаемого результата так и не нашел.
Буду признателен, если ответ будет по принципу "для тех кто в танке" :)
Дополнительно:
Убрать, то есть не выводить на главной - не проблема.
<?php if ( ! is_front_page() ) : ?> <button onclick="history.back()">на предыдущую страницу</button> <?php endif; ?> |
<?php if ( ! is_front_page() ) : ?> <button onclick="history.back()">на предыдущую страницу</button> <?php endif; ?>
в нужный шаблон. Или через подходящий хук.
Проблема в другом: какая страница будет предыдущей, если посетитель пришел по прямой ссылке на внутреннюю страницу из поисковика, по ссылке в соцсетях или из закладки?
- Об этом я не подумал...
Изначально отталкивался от того, что есть Главная страница, а далее стоится цепочка до последней страницы (с которой необходимо вернуться на шаг назад)...
Исходя из вашего справедливого вопроса, получается, что действительно есть сложность.
По логике, стрелка должна вести на предыдущую страницу сайта, но как браузеры поймут, что нужно сделать шаг назад внутри сайта и делать эти шаги до тех пор, пока пользователь не доберется до главной? -
Об этом я не подумал...
Не Вы первый, не Вы последний ;) Очень распространенные грабли, многие на этом набили себе шишек.
Наверно, можно проверять document.referrer (javascript у клиента) или $_SERVER['HTTP_REFERER'] (php на стороне сервера): если там чужой домен, делать переход на главную. Но referrer не очень надежная штука, хотя и лучше чем ничего ))
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Кнопка «назад» делается просто, но у неё есть важный нюанс:
history.back()возвращает пользователя на предыдущую страницу в истории браузера. Если человек пришёл сразу из поиска или открыл страницу в новой вкладке, предыдущей страницы вашего сайта может не быть. Поэтому нужен fallback на главную или нужный раздел.Выводить кнопку на всех страницах, кроме главной:
<?php if (!is_front_page()) : ?> <button class="js-back-button" type="button">Назад</button> <?php endif; ?>
JS:
document.addEventListener('DOMContentLoaded', function () { const button = document.querySelector('.js-back-button'); if (!button) return; button.addEventListener('click', function () { if (document.referrer && document.referrer.indexOf(window.location.host) !== -1) { window.history.back(); } else { window.location.href = '/'; } }); });document.addEventListener('DOMContentLoaded', function () { const button = document.querySelector('.js-back-button'); if (!button) return; button.addEventListener('click', function () { if (document.referrer && document.referrer.indexOf(window.location.host) !== -1) { window.history.back(); } else { window.location.href = '/'; } }); });
Так кнопка вернёт назад, если пользователь пришёл с вашего же сайта. Если он пришёл из Яндекса/Google или из мессенджера, кнопка отправит на главную, а не на внешний сайт.
Если кнопка должна вести в конкретный раздел, например в каталог или блог, замените fallback:
window.location.href = '/blog/';
Если нужно скрыть кнопку на главной, условие
!is_front_page()подходит для статической главной страницы. Если у вас главная блога, иногда нужно добавить!is_home():if (!is_front_page() && !is_home()) { // вывод кнопки }
Не советую делать кнопку обычной ссылкой на
javascript:history.back(). Кнопка с JS-обработчиком и fallback ведёт себя предсказуемее и безопаснее.