Dlaczego to nie działa:nie ustawiaj trzeciego parametru $wpdb->insert
do pustego ciągu. Odpowiednio formatuje każde pole.
To, co teraz robi, jest równoznaczne z:
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
Jeśli naprawdę chcesz ustawić trzeci parametr, powinieneś zrobić:
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
Jeśli chodzi o błąd:tabela wp_term_relationships ma unikalny klucz podstawowy (object_id, term_taxonomy_id). Oznacza to, że nie możesz mieć dwóch wierszy w tej tabeli, które mają zarówno ten sam object_id, jak i term_taxonomy_id.
Chociaż stało się tak, ponieważ ustawiając trzeci parametr wstawiania na pusty ciąg, próbujesz w kółko wstawiać wiersze z object_id=0 i term_taxonomy_id=0.