Вопрос или проблема
У меня есть трудности с импортом пользовательских метаданных и постовых метаданных из моих таблиц, которые не относятся к WordPress. Я пытаюсь осуществить миграцию базы данных из таблицы пользователей и таблицы постов в таблицы WordPress.
Это может быть
- таблица пользователей в wp-users и wp-usermeta
- таблица постов в wp-posts и wp-postmeta
Я пытался найти хорошие плагины, но они все ограничены. (только основная информация)
В моей старой таблице пользователей находится вся информация о пользователе в только 1 строке, такой как номер телефона, мобильный, дата рождения и т.д.
Эти данные должны быть в таблице user-meta.
Старые таблицы пользователей и wp-users находятся в одной базе данных.
Как я могу вставить информацию о пользователях из старой таблицы пользователей в wp-users (для основной информации) и wp-usermeta (для дополнительной информации)?
Можно ли это сделать с помощью кода PHP? (поскольку это в одной и той же базе данных)
Я пытаюсь разобраться, как это сделать с помощью PHP или чего-то другого.
Если кто-то знает, можете ли вы посоветовать мне образец кода?
Или кто-то знает хорошие плагины? Все найденные мной плагины не подходят для ввода всей информации о пользователе.
- Получите все данные из DB1 (не-WP-данные) и сохраните в $array.
- Используйте этот код 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');
Примечания:
-
Не забудьте протестировать код на локальной копии вашего сайта или в тестовой среде перед использованием на живом сайте.
-
Отключите функцию после завершения миграции, чтобы не выполнять импорты при каждой загрузке страницы администратора:
remove_action('admin_init', 'cxg_wp_insert_user');
-
Безопасность: Убедитесь, что данные из старой базы данных безопасны к использованию и подготовлены для вставки в WordPress (например, необходимо проверить формат Email).
-
Документация: Дополнительные сведения о методах
wp_insert_user()
иupdate_user_meta()
можно найти в документации WordPress.
Выполнив указанные выше шаги, вы сможете успешно перенести пользователей и их метаданные из вашей старой базы данных в WordPress.