8 хуков для functions.php, необходимых каждому сайту на WP
Опубликовано: 01.09.2018

Итак, вы только что установили свой сайт на WordPress (условимся, что наш WordPress на русском языке, если нет — то будет одним хуком меньше). Также будем считать, что вы уже определились с темой, которую будете использовать, либо же вы решили создать свою собственную тему — одно из двух.
What Are Hooks?
В этом посту я перечислю не просто хуки, «которые прикольные», а хуки, которые необходимы к установке на каждый WordPress-сайт. Надеюсь, благодаря моим постам, ваши сайты (и все сайты рунета) станут чуточку лучше.
1. Склонение дат на сайте
Если вы хотите, чтобы вместо «Опубликовано 31 Декабрь 2013» у вас отображалось «Опубликовано 31 декабря 2013», тогда этот хук обязателен к установке:
#8. Установка Wordpress. Вывод страницы Wordpress | Верстка под Wordpress на Bootstrap 4 + Sass.
function true_russian_date_forms ( $the_date = '' ) { if ( substr_count ( $the_date , '---' ) > 0 ) { return str_replace ( '---' , '' , $the_date ) ; } // массив замен для русской локализации движка и для английской $replacements = array ( "Январь" => "января" , // "Jan" => "января" "Февраль" => "февраля" , // "Feb" => "февраля" "Март" => "марта" , // "Mar" => "марта" "Апрель" => "апреля" , // "Apr" => "апреля" "Май" => "мая" , // "May" => "мая" "Июнь" => "июня" , // "Jun" => "июня" "Июль" => "июля" , // "Jul" => "июля" "Август" => "августа" , // "Aug" => "августа" "Сентябрь" => "сентября" , // "Sep" => "сентября" "Октябрь" => "октября" , // "Oct" => "октября" "Ноябрь" => "ноября" , // "Nov" => "ноября" "Декабрь" => "декабря" // "Dec" => "декабря" ) ; return strtr ( $the_date , $replacements ) ; } // если хотите, вы можете приминить только некоторые из фильтров add_filter ( 'the_time' , 'true_russian_date_forms' ) ; add_filter ( 'get_the_time' , 'true_russian_date_forms' ) ; add_filter ( 'the_date' , 'true_russian_date_forms' ) ; add_filter ( 'get_the_date' , 'true_russian_date_forms' ) ; add_filter ( 'the_modified_time' , 'true_russian_date_forms' ) ; add_filter ( 'get_the_modified_date' , 'true_russian_date_forms' ) ; add_filter ( 'get_post_time' , 'true_russian_date_forms' ) ; add_filter ( 'get_comment_date' , 'true_russian_date_forms' ) ; |
Функция склонения дат будет работать как для постов и страниц, так и для комментариев WordPress.
2. Сообщения об ошибках при попытке авторизации пользователя на сайте
Если при авторизации допустить ошибку при вводе логина или пароля, WordPress указывает, что именно было введено неправильно. Например «ОШИБКА: Неверное имя пользователя.» или «ОШИБКА: Введённый вами пароль пользователя admin неверен.»
Для того, чтобы WordPress не сообщал лишней информации, мы на оба случая сделаем общее сообщение об ошибке, вставив следующий код в functions.php.
function true_change_default_login_errors ( ) { return '<strong>ОШИБКА</strong>: Вы ошиблись при вводе логина или пароля.' ; } add_filter ( 'login_errors' , 'true_change_default_login_errors' ) ; |
Подробнее о замене сообщений об ошибках вы можете почитать здесь .
3. Защита от вредоносных URL-запросов
if ( strpos ( $_SERVER [ 'REQUEST_URI' ] , "eval(" ) || strpos ( $_SERVER [ 'REQUEST_URI' ] , "CONCAT" ) || strpos ( $_SERVER [ 'REQUEST_URI' ] , "UNION+SELECT" ) || strpos ( $_SERVER [ 'REQUEST_URI' ] , "base64" ) ) { @ header ( "HTTP/1.1 400 Bad Request" ) ; @ header ( "Status: 400 Bad Request" ) ; @ header ( "Connection: Close" ) ; @ exit ; } |
4. Защита от автоматического спама
Отлично борется с автоматическим спамом, результат — менее 5 спамных комментариев в месяц. Хочу обратить внимание, что прежде, чем вставлять этот хук в ваш functions.php, вы должны добавить скрытое поле в форму комментирования на сайте, иначе вообще никакие комментарии проходить не будут. Читайте подробнее здесь .
function true_stop_spam ( $commentdata ) { $fake = trim ( $_POST [ 'comment' ] ) ; // обычное поле комментирования мы скроем через CSS if ( !empty ( $fake ) ) // заполнение его роботами будет приводить к ошибке, комментарий отправляться не будет wp_die ( 'Спамный коммент!' ) ; $_POST [ 'comment' ] = trim ( $_POST [ 'true_comment' ] ) ; // затем мы присвоим ему значение поля комментария, которое для людей return $commentdata ; } add_filter ( 'pre_comment_on_post' , 'true_stop_spam' ) ; |
5. Скрываем имена пользователей из HTML-кода комментариев
Этот хук позволит удалить все имена пользователей из CSS-классов комментариев. Если же у вас стили комментария администратора отличаются от стилей остальных комментов, то благодаря этому хуку вы также можете добавить какой-нибудь особенный класс именно для администратора сайта. Читайте подробнее здесь .
function true_remove_css_class ( $classes ) { foreach ( $classes as $key => $class ) { if ( strstr ( $class , "comment-author-" ) ) { unset ( $classes [ $key ] ) ; } } return $classes ; } add_filter ( 'comment_class' , 'true_remove_css_class' ) ; |
6. Запрет пингбэков и трэкбэков на самого себя
После добавления этого кода в functions.php, трэкбэки больше не будут появляться, когда вы будете ссылаться на другие посты вашего сайта.
function true_disable_self_ping ( & $links ) { foreach ( $links as $l => $link ) if ( 0 === strpos ( $link , get_option ( 'home' ) ) ) unset ( $links [ $l ] ) ; } add_action ( 'pre_ping' , 'true_disable_self_ping' ) ; |
7. Скрываем версию WordPress
По умолчанию можно узнать версию установленного на сайте WordPress, заглянув в исходный HTML-код или в код RSS. Для того, чтобы не предоставлять злоумышленникам лишней информации, вставляем это в funcions.php:
function true_remove_wp_version_wp_head_feed ( ) { return '' ; } add_filter ( 'the_generator' , 'true_remove_wp_version_wp_head_feed' ) ; |
Подробнее здесь .
8. Ставим ссылку на себя в футере в админке
Если вы сделали кому-то сайт, то в футер можно добавить ненавязчивое сообщение, что разработкой занимались вы.
function true_change_admin_footer ( ) { $footer_text = array ( 'Спасибо вам за творчество с <a href="http://wordpress.org">WordPress</a>' , 'Разработал <a href="https://misha.blog" target="_blank">Миша Рудрастых</a>' ) ; return implode ( ' • ' , $footer_text ) ; } add_filter ( 'admin_footer_text' , 'true_change_admin_footer' ) ; |
В итоге получим:
Ещё несколько полезных хуков:
Как заменить стандартное лого в WordPress на странице логина При помощи нескольких строчек кода вы сможете применить любые CSS-стили к странице входа на сайт, в том числе и поменять логотип. Удаление пунктов меню в админке WordPress Используя функции remove_menu_page() и remove_submenu_page(), удаляем пункты и подпункты меню в админке. Изменение имени и email отправителя почты с сайта на WordPress Вставив небольшой код в functions.php, поменяем стандартные имя и e-mail отправителя писем на свои собственные. Перенаправление на пост, если в результатах поиска он только один Моментальный редирект пользователя на запись, в случае, если кроме неё больше ничего не найдено. Как отключить автоматическую замену URL-адресов в комментариях на кликабельные ссылки По умолчанию Wordpress заменяет на ссылку любое слово, начинающееся с http:// или www. Я покажу вам, как это можно отключить. Отключение стандартных размеров изображений в WordPress Как сэкономить место на сервере, отключив автоматическую генерацию неиспользуемых размеров (Миниатюра, Средний, Большой) изображений. Как отключить уведомления об обновлении браузера в WordPress Всего несколько строчек кода, вставленных в functions.php позволят вам навсегда избавиться от назойливых напоминаний об обновлении браузера в админке WordPress. Используем e-mail вместо имени пользователя для входа на сайт Несколько строчек кода (без плагинов) позволят вашим пользователям входить на сайт используя адрес электронной почты вместо логина (имени пользователя).Сегодня | Завтра | ||
USD | 32.62 | 32.50 |
![]() |
EUR | 39.90 | 39.92 |
![]() |
Обменник | Переходов |
![]() |
6 |
![]() |
5 |
![]() |
4 |
![]() |
3 |
![]() |
3 |
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки | |
Кошелек
|
|
Код
|
|
Обмен Webmoney |