Що се отнася до това защо не работи:не задавайте трети параметър на $wpdb->insert
към празен низ. Той форматира съответно всяко поле..
Това, което прави сега, е еквивалентно на:
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
Ако наистина искате да зададете трети параметър, трябва да направите:
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
Що се отнася до грешката:таблицата wp_term_relationships има уникален първичен ключ на (object_id, term_taxonomy_id). Това означава, че не можете да имате два реда в тази таблица, които имат едновременно object_id и term_taxonomy_id.
Въпреки че това се е случило, защото като зададете трети параметър на вмъкване на празен низ, вие се опитвате да вмъкнете редове с object_id=0 и term_taxonomy_id=0 отново и отново.