Импорт (миграция) базы данных пользователей в wp-users

Вопрос или проблема

У меня есть трудности с импортом пользовательских метаданных и постовых метаданных из моих таблиц, которые не относятся к WordPress. Я пытаюсь осуществить миграцию базы данных из таблицы пользователей и таблицы постов в таблицы WordPress.

Это может быть

  • таблица пользователей в wp-users и wp-usermeta
  • таблица постов в wp-posts и wp-postmeta

Я пытался найти хорошие плагины, но они все ограничены. (только основная информация)

В моей старой таблице пользователей находится вся информация о пользователе в только 1 строке, такой как номер телефона, мобильный, дата рождения и т.д. Эти данные должны быть в таблице user-meta.

Старые таблицы пользователей и wp-users находятся в одной базе данных.

Как я могу вставить информацию о пользователях из старой таблицы пользователей в wp-users (для основной информации) и wp-usermeta (для дополнительной информации)?

Можно ли это сделать с помощью кода PHP? (поскольку это в одной и той же базе данных)
Я пытаюсь разобраться, как это сделать с помощью PHP или чего-то другого.

Если кто-то знает, можете ли вы посоветовать мне образец кода?
Или кто-то знает хорошие плагины? Все найденные мной плагины не подходят для ввода всей информации о пользователе.

  1. Получите все данные из DB1 (не-WP-данные) и сохраните в $array.
  2. Используйте этот код WordPress в вашем functions.php для.insert пользователя в DB2 (база данных WordPress).
function cxg_wp_insert_user() {
    foreach ( $array as $arr ) {
        $user_data = array(
        'ID' => '',
        'user_pass' => wp_generate_password(),
        'user_login' => $loginName,
        'user_nicename' => $nicename,
        'user_url' => '',
        'user_email' => $eMail,
        'display_name' => $displayName,
        'nickname' => '$nickname',
        'first_name' => $firstName,
        'role' => get_option('default_role')
        }
    );
    $user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'cxg_wp_insert_user' );
 3. После обновления отключите эту функцию

ПРИМЕЧАНИЕ: Для получения дополнительной информации о вставке пользователя перейдите на кодекс WordPress для вставки пользователя

Ответ или решение

Для импорта пользователей и их метаданных из вашей старой базы данных в таблицы WordPress (wp_users и wp_usermeta), вы можете использовать PHP-код, который будет извлекать данные из вашей старой таблицы и вставлять их в соответствующие таблицы WordPress. Ниже приведены шаги, которые помогут вам успешно выполнить миграцию.

Шаг 1: Извлечение данных из старой таблицы

Предположим, что ваша старая таблица (недоступная в WordPress) называется old_users и имеет такие поля, как id, username, email, phone, phone_mobile, dob, и т. д. Мы сначала извлекаем все данные из этой таблицы и сохраняем их в массив.

Шаг 2: Вставка данных в wp_users и wp_usermeta

Создайте функцию в вашем файле functions.php вашей темы WordPress. Данная функция будет проходить по массиву, созданному на первом шаге, и вставлять данные в таблицы WordPress.

function cxg_wp_insert_user() {
    global $wpdb;

    // Получаем данные из старой таблицы
    $old_users = $wpdb->get_results("SELECT * FROM old_users", ARRAY_A);

    foreach ($old_users as $old_user) {
        // Подготовка данных для wp_users
        $user_data = array(
            'user_login' => $old_user['username'],
            'user_pass' => wp_generate_password(), // Генерируем пароль
            'user_email' => $old_user['email'],
            'display_name' => $old_user['username'], // Или любое другое поле по вашему выбору
            'nickname' => $old_user['username'], // Или любое другое поле по вашему выбору
            'first_name' => '', // Укажите, если требуется
            'role' => get_option('default_role'), // Установите роль по умолчанию
        );

        // Вставляем пользователя
        $user_id = wp_insert_user($user_data);

        if (!is_wp_error($user_id)) {
            // Если вставка прошла успешно, добавляем метаданные
            update_user_meta($user_id, 'phone', $old_user['phone']);
            update_user_meta($user_id, 'mobile', $old_user['phone_mobile']);
            update_user_meta($user_id, 'dob', $old_user['dob']);
            // Добавьте другие метаданные по необходимости
        }
    }
}

// Запускаем функцию при администраторском инициализации
add_action('admin_init', 'cxg_wp_insert_user');

Примечания:

  1. Не забудьте протестировать код на локальной копии вашего сайта или в тестовой среде перед использованием на живом сайте.

  2. Отключите функцию после завершения миграции, чтобы не выполнять импорты при каждой загрузке страницы администратора:

    remove_action('admin_init', 'cxg_wp_insert_user');
  3. Безопасность: Убедитесь, что данные из старой базы данных безопасны к использованию и подготовлены для вставки в WordPress (например, необходимо проверить формат Email).

  4. Документация: Дополнительные сведения о методах wp_insert_user() и update_user_meta() можно найти в документации WordPress.

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

Оцените материал
Добавить комментарий

Капча загружается...