Такая вещь полезная для seo оптимизации. Все знают, что мертвые ссылки, это не очень хорошо. Искать в ручную такие страницы не очень весело, а вот когда поиск автоматически происходит и Вам на почту приходят адреса, так повеселее.:)
Данный скрипт я нашел в интернете, но он был в два раза больше и содержал кучу лишних, по моему мнению строк. К тому же, его сделал человек не с рунета. Все комментарии и текст письма был на английском. Я переделал немного и русифицировал с добавлением кодировки - utf-8.
Скрипт полностью автоматический и универсальный, его не нужно настраивать для работы. Адрес куда отправлять письмо, он берет тот, что Вы указали в настройках в админ части - Настройки - Общие - Адрес e-mail.
Готовый скрипт работает так, что фиксирует пользователя, который попал на страницу 404. После чего сразу отправляется письмо администратору. В письме указан получатель, отправитель, тема письма и сообщение.
В сообщении указывается время, когда посетитель попал на страницу с ошибкой, ссылка этой самой страницы, и сайт от куда он пришел. По последнему, если сайт определить не удалось, то выведется сообщение - неизвестно(например когда пользователь перешел по сохраненной закладе). Выглядит это примерно так:

Чтобы осуществить отправку, нужно сделать следующее. В папке Вашей темы найти файл 404.php и в самый верх добавьте код представленный ниже. Если у вас нет файла 404.php, то узнайте как его создать в этой статье - Как сделать страницу 404 для WordPress
Готовый код:
<?php
// Статус
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
// Откуда пришли
if (isset($_SERVER['HTTP_REFERER'])) {
$referer = clean($_SERVER['HTTP_REFERER']);
} else {
$referer = "неизвестно";
}
// url запроса
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"])) {
$request = clean('http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
} else {
$request = "неизвестно";
}
// Время
$time = clean(date("d M Y H:i", time()));
// обработка
function clean($string) {
$string = rtrim($string);
$string = ltrim($string);
$string = htmlentities($string, ENT_QUOTES);
$string = str_replace("\n", "<br>", $string);
if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
return $string;
}
$email = get_bloginfo('admin_email');
$from = "From:" . $email;
$headers = "Content-type: text/plain; charset=\"utf-8\"\r\n";
$header = "404 Ошибка на сайте";
$message =
"Посетитель Вашего сайта попал на несуществующую страницу \n" .
"Время: " . $time . "\n" .
"Ссылка 404 страницы: " . $request . "\n" .
"От куда пришел пользователь: " . $referer . "\n" ;
mail($email, $header , $message, $headers, $from);
?>
Если Вы хоть немного разбираетесь в PHP, то поймете структуру и в случаи надобности как-то измените под себя, если это нужно. Также если нужно можно менять текст.
Хоть почта берется администратора, если нужно, Вы можете изменить ее. Для этого нужно заменить строку:
$email = get_bloginfo('admin_email');
На эту:
$email = "Ваша_почта@mail.com";
Теперь все готово. Чтобы проверить, попробуйте ввести адрес своего сайта потом слэш - / - и цифры или буквы наугад, после чего, обновить страницу. Например - ваш_сайт.com/jkhkkjkjhkkjkhk2121..
Дополнение. Установил себе и заметил еще одну полезную штуку. У меня есть статьи с примерами. Это ссылки на страницы где показана анимация, структура и тд, в общем пример чего-то. Так вот, если я там, случайно указал путь к картинки которой нет, или подключил например файл, а его в папке с примером нет, то когда кто-то попадет на эту страницу, он увидит все как надо, но вот мне приходит письмо, что подключенный файл не найден. Также, если Вы в теме, или записи где-то что-то подключите, укажете путь, а этого больше не будет, тоже придет письмо. То есть, запись посетитель увидит, но например без картинки, которая лежала на другом сайте. Вы узнаете сразу, что такой картинки нет и сможете быстро устранить проблему. Вот такой вот он оказался полезный. Лично мне понравилось.
На этом все, спасибо за внимание. 🙂




