Какой хук срабатывает при обновлении информации профиля пользователя?
Я ищу хук, который срабатывает при обновлении информации пользователя. В частности, я хочу обновлять запись значением пользовательского поля профиля (в моем примере info
) каждый раз, когда профиль пользователя обновляется.
Я попробовал хук profile_update
, но он, похоже, не срабатывает:
add_action( 'profile_update', 'add_info_to_post' );
function add_info_to_post( $user_id ) {
// получаем информацию пользователя
$info=get_user_meta($user_id,'info',true);
// получаем все элементы этого пользователя
$args=array(
'author' => $user_id,
'post_type' => 'item',
);
$items=get_posts($args);
foreach ($items as $item){
update_post_meta($item->ID,'user_info',$info);
}
}
Есть ли предложения, как это реализовать?
РЕДАКТИРОВАНИЕ: Возможно, стоит упомянуть, что я получаю доступ к страницам профиля пользователей через панель администратора..
Из Codex: Plugin API - Action Reference - profile_update:
Примечание: Этот хук не используется на страницах редактирования/профиля пользователя. Для подключения к страницам редактирования пользователя в админке используйте хук edit_user_profile_update, который находится в
/wp-includes/user-edit.php
.
Из Codex: Plugin API - Action Reference - edit_user_profile_update:
Этот хук срабатывает только когда пользователь просматривает страницу профиля другого пользователя (не свой собственный). Если вы хотите применить ваш хук ко ВСЕМ страницам профилей (включая текущего пользователя), то вам также необходимо использовать хук personal_options_update.

Вы можете использовать хук действия updated_user_meta
. Он срабатывает сразу после обновления метаданных пользователя. Подробнее о хуке
Я использовал этот хук для проверки, обновлено ли фото профиля пользователя. Вот рабочий код для моего случая:
/**
* Устанавливает URL аватара профиля при обновлении фото пользователя
*
* Решенная проблема: необходимо перезагружать страницу, чтобы обновить
* фото профиля в боковой панели, даже после добавления/удаления аватара в форме профиля пользователя.
*/
add_action( 'updated_user_meta', 'gem_updated_profile_photo', 10, 4);
function gem_updated_profile_photo( $meta_id, $object_id, $meta_key, $meta_value ){
if ( $meta_key === 'avater' ) {
// выполните нужные действия здесь
}
}
