Некоторая предыстория (не имеет прямого отношения к моему вопросу, но, возможно, кто-то другой сможет использовать мой метод)
Я работаю в WordPress v3.9.1, используя плагин Advanced Custom Fields. Я импортировал CSV-файл с пользовательскими значениями (с помощью плагина WP Ultimate CSV Importer, бесплатная версия) из старой базы данных, отформатированной так, как мне нужно в WordPress, за одним исключением - ACF Repeater Fields. Плагин отличный, но пока нет хорошего метода импорта большого количества данных.
Поля репитера хранятся в базе данных следующим образом:
meta_id post_id meta_key meta_value
3894 4697 beds 2
3895 4697 _beds field_53bcfe244a98d
4051 4697 _beds_0_other field_53c2273053218
4050 4697 beds_0_other 1
4051 4697 _beds_1_other field_53c2273053218
4050 4697 beds_1_other 3
5894 4698 beds 2
5895 4698 _beds field_53bcfe244a98d
5051 4698 _beds_0_other field_53c2273053218
5050 4698 beds_0_other 1
5051 4698 _beds_1_other field_53c2273053218
5050 4698 beds_1_other 3
То есть; для каждого post_id есть одно поле Repeater, называемое "кровати". «В» поле ретранслятора - это 1 поле, повторяющееся дважды. Каждое поле имеет 2 записи в базе данных - ссылку на поле (используется для управления сохранением полей - всегда одно и то же для каждого поля) и значение. Не такая интуитивно понятная настройка, как могла бы быть, но она разработана на основе стандартной системы таблиц WordPress.
Актуальный вопрос
Прямо сейчас у меня есть поля, импортированные из моей старой базы данных, которые выглядят следующим образом:
meta_id post_id meta_key meta_value
#### 4697 beds 2
#### 4697 beds_0_other 1
#### 4697 beds_1_other 3
#### 4698 beds 2
#### 4698 beds_0_other 1
#### 4698 beds_1_other 3
Мне нужно добавить
meta_id post_id meta_key meta_value
#### 4697 _beds field_53bcfe244a98d
#### 4697 _beds_1_other field_53c2273053218
#### 4697 _beds_0_other field_53c2273053218
#### 4698 _beds field_53bcfe244a98d
#### 4698 _beds_1_other field_53c2273053218
#### 4698 _beds_0_other field_53c2273053218
meta_key и meta_value статичны - они никогда не меняются (после создания поля оно сохраняет то же поле _ ## до удаления). meta_id - это автоматическое приращение.
Проблема в том, что у меня 200+ значений post_id, каждое из которых требует 50 статических записей - я не хочу жестко кодировать это. Я могу выбрать требуемые идентификаторы, используя следующее:
SELECT DISTINCT ID
FROM `wp_posts`
WHERE post_type = "community"
// Returns:
post_id
4697
4698
Короче
Как я могу сделать следующее:
INSERT INTO `table` (`meta_id`, `post_id`, `meta_key`, `meta_value`)
VALUES
// foreach related distinct ID in wp_posts
(NULL, 'ID', "_beds", "field_53bcfe244a98d"),
(NULL, 'ID', "_beds_0_other", "field_53c2273053218"),
(NULL, 'ID', "_beds_1_other", "field_53c2273053218")
// end foreach
** временное решение **
На данный момент я просто сбросил все данные с помощью PHP и загрузил их в PHPMyAdmin. Мог бы написать цикл PHP, который вставляет, но я ищу решение MySQL, которое я могу использовать без необходимости загружать новый файл php (или sql).
$ids = array("4697", "4698" );
echo '
INSERT INTO `table` (`meta_id`, `post_id`, `meta_value`, `meta_key`)
VALUES<br />';
foreach ($ids as $id){
echo '
(NULL, "'. $id .'", "1", "beds"),
(NULL, "'. $id .'", "field_53bcfe244a98d", "_beds"),
(NULL, "'. $id .'", "field_53c2273053218", "_beds_0_other"),
<br />';
}