Как синхронизировать записи пользователей и метаданные в WordPress между сайтами

Если у вас есть несколько сайтов на WordPress, часто возникает задача поддерживать актуальность данных пользователей на всех площадках. В частности, необходимо синхронизировать не только базовые записи пользователей, но и их метаданные — например, дополнительные поля профиля, настройки, или пользовательские параметры, используемые темами и плагинами.

Почему важна синхронизация метаданных пользователей

Стандартный экспорт и импорт пользователей через CSV или XML часто не учитывает сложные метаданные, которые хранятся в таблице wp_usermeta. Без их синхронизации пользовательский опыт будет неполным: пользователи могут потерять настройки, уровни доступа, или другие важные атрибуты.

Для разработчиков и администраторов сайтов это означает необходимость более точного и гибкого подхода, учитывающего все пользовательские данные.

Основные способы синхронизации пользователей и их метаданных

1. Использование API REST WordPress

WordPress имеет мощный REST API, позволяющий получать и обновлять данные пользователей. Однако стандартный API не возвращает метаданные, если они не зарегистрированы через функцию register_meta() с параметром 'show_in_rest' => true.

Для синхронизации метаданных нужно зарегистрировать нужные ключи, затем использовать запросы GET и POST для чтения и записи данных.

function wpsync_register_user_meta() {
  register_meta('user', 'favorite_color', [
    'type' => 'string',
    'description' => 'Любимый цвет пользователя',
    'single' => true,
    'show_in_rest' => true,
  ]);
}
add_action('rest_api_init', 'wpsync_register_user_meta');

После регистрации метаданных можно получить или обновить их через REST API, что позволяет реализовать синхронизацию через HTTP-запросы между сайтами.

2. Плагины для синхронизации пользователей

Существует несколько плагинов, которые могут помочь автоматизировать этот процесс:

  • WP Migrate DB Pro — позволяет синхронизировать базы данных, включая таблицы пользователей и метаданных. Есть возможность выбирать конкретные таблицы и фильтровать данные.
  • User Sync — плагин для синхронизации пользователей между сайтами. Поддерживает передачу метаданных, включая пользовательские поля.
  • Multisite User Sync/Unsync — если вы используете мультисайт WordPress, этот плагин позволяет синхронизировать пользователей между сайтами сети.

Выбирая плагин, обращайте внимание на поддержку метаданных и возможность настройки фильтров.

Практический пример: синхронизация пользователей и метаданных через REST API

Предположим, у нас есть два сайта: source-site и target-site. На первом сайте при обновлении пользователя мы хотим отправить данные на второй.

Регистрация метаданных на обоих сайтах

Добавьте в файл functions.php или в плагин следующий код:

function wpsync_register_user_meta() {
  register_meta('user', 'favorite_color', [
    'type' => 'string',
    'description' => 'Любимый цвет пользователя',
    'single' => true,
    'show_in_rest' => true,
  ]);
}
add_action('rest_api_init', 'wpsync_register_user_meta');

Отправка данных пользователя на другой сайт

Используйте хук profile_update для отправки обновлённых данных:

function wpsync_send_user_data( $user_id, $old_user_data ) {
  $user = get_userdata( $user_id );
  $favorite_color = get_user_meta( $user_id, 'favorite_color', true );

  $data = [
    'username' => $user->user_login,
    'email' => $user->user_email,
    'favorite_color' => $favorite_color,
  ];

  $response = wp_remote_post('https://target-site.ru/wp-json/wpsync/v1/user-sync', [
    'headers' => [
      'Authorization' => 'Bearer YOUR_API_TOKEN',
      'Content-Type'  => 'application/json',
    ],
    'body' => json_encode($data),
  ]);
}
add_action('profile_update', 'wpsync_send_user_data', 10, 2);

Замените https://target-site.ru на адрес вашего второго сайта и настройте авторизацию.

Приём и обработка данных на целевом сайте

Создайте REST маршрут для приёма данных:

function wpsync_register_routes() {
  register_rest_route('wpsync/v1', '/user-sync', [
    'methods' => 'POST',
    'callback' => 'wpsync_handle_user_sync',
    'permission_callback' => function() {
      return current_user_can('manage_options'); // или ваша проверка авторизации
    }
  ]);
}
add_action('rest_api_init', 'wpsync_register_routes');

function wpsync_handle_user_sync( WP_REST_Request $request ) {
  $params = $request->get_json_params();

  if (empty($params['username']) || empty($params['email'])) {
    return new WP_Error('missing_data', 'Не хватает данных пользователя', ['status' => 400]);
  }

  $user = get_user_by('login', $params['username']);
  if (!$user) {
    $user_id = wp_create_user($params['username'], wp_generate_password(), $params['email']);
    if (is_wp_error($user_id)) {
      return $user_id;
    }
  } else {
    $user_id = $user->ID;
    wp_update_user([
      'ID' => $user_id,
      'user_email' => $params['email'],
    ]);
  }

  if (!empty($params['favorite_color'])) {
    update_user_meta($user_id, 'favorite_color', sanitize_text_field($params['favorite_color']));
  }

  return ['success' => true, 'user_id' => $user_id];
}

Дополнительные советы по синхронизации пользователей

Обработка конфликтов и дубликатов

При синхронизации важно учитывать, что один и тот же пользователь может существовать на двух сайтах с разными данными. Рекомендуется использовать уникальный идентификатор, например, email, для сопоставления. В случае конфликта — определять приоритет данных или объединять информацию.

Безопасность и авторизация

Обязательно защищайте REST маршруты с помощью токенов или ключей API. Не допускайте открытого доступа, чтобы избежать подделки данных или взлома.

Автоматизация и планирование

Если синхронизация должна проходить регулярно, используйте WP-Cron для запуска функций по расписанию. Например, синхронизируйте за один раз пачку пользователей, чтобы не нагружать сервер.

Использование плагина Clearfy Pro для оптимизации и безопасности

Плагин Clearfy Pro поможет отключить ненужные REST API эндпоинты и повысить безопасность вашего сайта при работе с внешними сервисами.

Кроме того, Clearfy Pro позволяет управлять пользовательскими ролями и правами, что полезно при синхронизации и администрировании.

Выводы и рекомендации

Синхронизация записей пользователей и их метаданных — задача, требующая точности и внимания к деталям. Использование REST API с правильной регистрацией метаданных, грамотная обработка конфликтов и защита данных — ключевые моменты успешной реализации.

Если не хотите реализовывать всё с нуля, рассмотрите профессиональные плагины для миграции и синхронизации, например, WP Migrate DB Pro или User Sync.

Как синхронизировать заказы WooCommerce со сторонними складскими системами
22.04.2026
Как исправить проблему с несинхронизированным статусом заказов WooCommerce между сайтами
18.04.2026
Автоматическая синхронизация пользовательских данных WordPress между сайтами
17.11.2025
Как синхронизировать пользовательские аватары WordPress между сайтами
21.03.2026
Автоматическая синхронизация оповещений WordPress между сайтами
30.01.2026