Angående varför det inte fungerar:ställ inte in den tredje parametern för $wpdb->insert
för att tömma strängen. Den formaterar varje fält därefter...
Vad den gör nu motsvarar:
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
Om du verkligen vill ställa in den tredje parametern bör du göra:
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
När det gäller fel:tabellen wp_term_relationships har en unik primärnyckel på (object_id, term_taxonomy_id). Det betyder att du inte kan ha två rader i den tabellen som har både samma object_id och term_taxonomy_id.
Även om detta har hänt för att genom att ställa in den tredje parametern för infogning till tom sträng, försöker du infoga rader med object_id=0 och term_taxonomy_id=0 om och om igen.