У меня есть просьба перенести сайт WordPress на пользовательскую CMS.
Проблема в том, что этот сайт WordPress имеет более 30 000 зарегистрированных пользователей, и таблица user_meta очень противоречива, потому что в течение последних 5 лет они использовали различные плагины для управления пользователями, поэтому некоторые пользователи имеют 10 записей в таблице user_meta, некоторые имеют 50 записей, а некоторые имеют до 150 записей (они хранили различную информацию о пользователях). в течение этих 5 лет).
Я должен спасти все Соответствующий данные (например, имена пользователей, имя, фамилия, имя, дата рождения, …) о пользователях в таблица базы данных не ключевых атрибутов. Итак, я собираюсь иметь обычные таблицы для пользователей (с определенными столбцами, такими как имя пользователя, имя_первой, фамилия, …), и мне нужно мигрировать конкретные записи данных от user_meta до одной или нескольких связанных таблиц для новой CMS. В настоящее время таблица user_meta содержит пару миллионов записей (релевантных и не релевантных).
Как я могу извлечь все необходимые данные для каждого пользователя (например, имя пользователя, имя_первой, фамилия, дата_бира) из таблицы user_meta, но они нужны не в формате ключ-значение, а в обычном формате, который я могу импортировать в таблицу на основе столбцов (так что я могу легко импортировать их)?
Спасибо
Я добавлю больше деталей к этому вопросу в комментариях, если это необходимо
Работайте, какие мета-ключи вам нужны. Большинство из них вам не нужны, поскольку они связаны с настройками WordPress, такими как «цвет администратора» и т. Д.
Тогда вы можете сделать что-то вроде этого https://wordpress.stackexchange.com/questions/231003/how-to-get-list-of-all-users-and-their-metadata
ИЛИ очень большой SQL-запрос (возможно, с лимитом & смещение)
SELECT T.ID, M1.meta_value AS first_name, M2.meta_value AS last_name, M4.meta_value AS event
FROM wp_users AS T
LEFT OUTER JOIN wp_usermeta AS M1 ON (T.ID=M1.user_id AND M1.meta_key = 'first_name')
LEFT OUTER JOIN wp_usermeta AS M2 ON (T.ID=M2.user_id AND M2.meta_key = 'last_name')
LEFT OUTER JOIN wp_usermeta AS M4 ON (T.ID=M4.user_id AND M4.meta_key = 'event')
ORDER BY T.ID ASC
Если есть какие-то неуникальные мета-значения, которые вам нужны, это станет хитрее.
Других решений пока нет …