Ответ выше был верным в том смысле, что в базе данных должны быть уникальные ключи, и она не может вставить строку, где пара ключ-значение уже существует, и необходимо задать формат каждого нового значения.Кроме того, что касается Wordpress, была проблема, которую я не решал, в частности, касался таблицы term_taxonomy и обновления счетчика.
Во-первых, важно отметить, что плагин был разработан для обновления определенных категорий сообщений.в таблице term_relationships.На самом деле это было достигнуто с помощью метода $ wpdb-> insert.Тем не менее, мой тест для определения, действительно ли плагин вставлял новые строки в таблицу term_relationships, заключался не в том, чтобы смотреть на таблицу напрямую, а на то, чтобы перейти на панель управления Wordpress, выбрать категории и посмотреть, было ли количество постов с этой категорией большедо.Это не сработало, потому что плагин никогда не обновлял счетчик в таблице term_taxonomy.Я обнаружил это, только щелкнув «просмотреть» рядом с категорией на панели инструментов Wordpress и увидев, что в этой категории было несколько постов, хотя в официальном «подсчете» Wordpress говорилось, что их нет.
Я подтвердил, чтоТаблицу term_taxonomy, столбец count, также необходимо обновить, перейдя прямо в базу данных и поместив WHERE = 'term_taxonomy_id' в оператор.Конечно, было более 1700 результатов, хотя Wordpress считал, что их не было.
Урок: Убедитесь, что метод $ wpdb-> insert работает с использованием PHPMyAdmin, не обязательно полагаясь на панель управления Wordpress.
С несколькими модификациями код теперь отлично работает.Вот пример:
foreach ($cb_t2c_objects as $values) {
global $wpdb;
$prefix = $wpdb->prefix;
$table = $prefix . 'term_relationships';
$object_id = $values->object_id;
$taxo_id = $values->cat_taxo;
$num_object_id = (int)$object_id;
$num_taxo_id = (int)$taxo_id;
//Need to check to see if row exists for each, if not, then insert.
$cb_t2c_get_row = $wpdb->get_row("
SELECT *
FROM ".$prefix."term_relationships
WHERE object_id = ".$num_object_id." AND term_taxonomy_id = ".$num_taxo_id."
GROUP BY object_id, term_taxonomy_id
", OBJECT);
//var_dump($cb_t2c_get_row);
if ( is_null($cb_t2c_get_row) ) {
//Insert the new values.
$wpdb->insert(
$table,
array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
),
array(
'%d',
'%d',
'%d'
)
);
}
//Set the variables for the count update.
$cb_t2c_term_taxonomy_table = $prefix . 'term_taxonomy';
$cb_t2c_update_data = $wpdb->get_var("
SELECT count(term_taxonomy_id) as 'new_count'
FROM ".$prefix."term_relationships
WHERE term_taxonomy_id = ".$num_taxo_id."
",0,0); //returning NULL
//var_dump($cb_t2c_update_data);
//Update the count in the term_taxonomy table.
$wpdb->query("
UPDATE ".$prefix."term_taxonomy
SET count = ".$cb_t2c_update_data."
WHERE term_taxonomy_id = ".$num_taxo_id."
");