При создании подключаемого модуля WordPress во время ловушки активации я вызываю следующий метод для создания тестовых данных в моей новой таблице базы данных.Я пытаюсь перебрать значения для добавления данных:
public static function installData()
{
global $wpdb;
$authorID = (get_current_user_id()) ? get_current_user_id() : '1';
$demoData = [
0 => [
'id' => '122',
'title' => 'Lorem ipsum dolor sit amet',
'url' => 'https://www.efsnetworks.com',
'image' => 'http://www.news.ucsb.edu/sites/www.news.ucsb.edu/files/styles/article_horizontal/public/images/2018/Cubic%20salt%20crystal%20aggregate.jpg',
'type' => 'small-block',
'authorID' => $authorID,
'dateCreated' => '2016-09-23 21:57:34',
'lastUpdate' => null,
'publishStatus' => '0'
],
1 => [
'id' => '123',
'title' => 'Ut enim ad minim veniam, quis nostrud',
'url' => 'https://www.google.com',
'image' => 'https://cdn.britannica.com/s:500x350/66/143166-049-4900844D.jpg',
'type' => 'small-block',
'authorID' => $authorID,
'dateCreated' => '2017-07-23 22:02:34',
'lastUpdate' => null,
'publishStatus' => '0'
],
2 => [
'id' => '124',
'title' => 'Duis aute irure dolor in reprehenderit in voluptate',
'url' => 'https://www.disruptivetechnology.com',
'image' => 'https://vignette.wikia.nocookie.net/forgottenrealms/images/1/13/Rock_crystal.jpg',
'type' => 'small-block',
'authorID' => $authorID,
'dateCreated' => '2018-12-23 22:03:34',
'lastUpdate' => null,
'publishStatus' => '0'
]
];
$table_name = $wpdb->wpAdvertisementAds;
foreach ($demoData as $index=>$values) {
foreach ($values as $key=>$value) {
$wpdb->insert(
$table_name,
[ $key => $value]
);
}
}
}
При этом я вижу, что данные добавляют новую строку из-за предложения $wpdb-insert
внутри вложенного foreach
,Тем не менее, когда я перемещаю это наружу в первый foreach
, данные не добавляются.В конце концов мне придется переписать его следующим образом:
public static function installData()
{
global $wpdb;
$authorID = (get_current_user_id()) ? get_current_user_id() : '1';
$table_name = $wpdb->wpAdvertisementAds;
$wpdb->insert(
$table_name,
[
'id' => '122',
'title' => 'Lorem ipsum dolor sit amet',
'url' => 'https://www.efsnetworks.com',
'image' => 'http://www.news.ucsb.edu/sites/www.news.ucsb.edu/files/styles/article_horizontal/public/images/2018/Cubic%20salt%20crystal%20aggregate.jpg',
'type' => 'small-block',
'authorID' => $authorID,
'dateCreated' => '2016-09-23 21:57:34',
'lastUpdate' => null,
'publishStatus' => '0'
]
);
$wpdb->insert(
$table_name,
[
'id' => '123',
'title' => 'Ut enim ad minim veniam, quis nostrud',
'url' => 'https://www.google.com',
'image' => 'https://cdn.britannica.com/s:500x350/66/143166-049-4900844D.jpg',
'type' => 'small-block',
'authorID' => $authorID,
'dateCreated' => '2017-07-23 22:02:34',
'lastUpdate' => null,
'publishStatus' => '0'
]
);
$wpdb->insert(
$table_name,
[
'id' => '124',
'title' => 'Duis aute irure dolor in reprehenderit in voluptate',
'url' => 'https://www.disruptivetechnology.com',
'image' => 'https://vignette.wikia.nocookie.net/forgottenrealms/images/1/13/Rock_crystal.jpg',
'type' => 'small-block',
'authorID' => $authorID,
'dateCreated' => '2018-12-23 22:03:34',
'lastUpdate' => null,
'publishStatus' => '0'
]
);
}
Есть ли у вас какие-либо советы, как заставить этот метод работать с помощью простой команды foreach
моих данных.Таким образом, я мог бы переместить набор данных за пределы php в файл json или любой другой источник файла (не связанный, но мог бы использоваться для будущего использования).