
Недавно нашел очень хороший хук, profile_update — с помощью него можно привязать любую функцию, которая будет активироваться после обновления профиль пользователя(любого профиля, и неважно кто его обновил).
Выглядит это следующим образом:
1 2 3 4 |
function notify_me_by_email( $id ) { //действие которое будет происходить при обновление профиля } add_action( 'profile_update', 'notify_me_by_email', 10, 2); |
Применить это можно, абсолютно для любых целей (на что воображения хватит).
Как пример, это можно сделать для того чтобы уведомлять пользователя о том, что его профиль был успешно изменен.
Так же это можно использовать для того, чтобы он (владелец аккаунта) узнал о том, что кто-то без просу меняет информацию его профиля. Например, взломали аккаунт пользователя и обновили его профиль — теперь истинный владелец аккаунта получит письмо о том, что аккаунт изменили, следовательно он может обратится к администрации сайта и восстановить свой аккаунт.
Вставляем функцию в functions.php вашей темы или в плагин:
1 2 3 4 5 6 7 8 9 |
function notify_me_by_email( $id ) { $website = get_bloginfo('wpurl'); $user = get_userdata( $id ); $to = $user->user_email; $subject = "Обновление профиля на сайте: ".$website.""; $message = "Привет, " . $user->display_name . "!\nВаш профиль был обновлён!\n\nСпасибо за посещение нашего сайта.\n".$website.""; wp_mail( $to, $subject, $message); } add_action( 'profile_update', 'notify_me_by_email', 10, 2); |
Я немного изменил функцию, и теперь при обновлении профиля любого из пользователей сайта, администратору сайта будет приходить сообщение о том, что «такой-то-такой-то пользователь обновил информацию в своем профиле», и приложенная ссылка на профиль пользователя обновившего свой профиль.
Для чего это может пригодится:
Например, для того, чтобы следить и модерировать информацию добавляемую пользователем. Если у вас на сайте или блоге, разрешено что-либо публиковать, а информация о профиле пользователя общедоступна, то этот пользователь в любой момент может изменить свою информацию и поставить какие либо ссылки на чужие ресурсы. Если вы думаете, что «я и так модерирую публикации», мне это незачем. Но вы не учли один нюанс, если у вас пользователей много которые что-либо публикуют, то уследить вы не сможете: пользователь опубликовал 4 публикации, ему надоело, он забыл, и вы про него забыли, но как-то раз, он вернулся и проставил «плохие» ссылки в своем профиле и ушел, а вы об этом не в курсе и не узнаете, пока вам кто-нибудь не пожалуется, что на такой-то-такой-то странице, вот такие вот «плохие» ссылки.
Также вставляем в functions.php вашей темы или плагин:
1 2 3 4 5 6 7 8 9 |
function notify_me_by_email( $id ) { $website = get_bloginfo('wpurl'); $user = get_userdata( $id ); $to = get_bloginfo('admin_email'); $subject = "Обновление профиля на сайте: ".$website.""; $message = "Пользователь, " . $user->display_name . " обновил профиль - http://site.ru/wp-admin/user-edit.php?user_id=".$id; wp_mail( $to, $subject, $message); } add_action( 'profile_update', 'notify_me_by_email', 10, 2); |
Примечание: В некоторых темах wordpress, эти функции вставленные в functions.php не работают (лично у меня, не работало), по этому их нужно вставлять в плагины и тогда все заработает.