En cuanto a por qué no funciona:no establezca el tercer parámetro de $wpdb->insert
a cadena vacía. Da formato a cada campo en consecuencia..
Lo que hace ahora es equivalente a:
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
Si realmente desea establecer el tercer parámetro, debe hacer:
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
En cuanto al error:la tabla wp_term_relationships tiene una clave principal única en (object_id, term_taxonomy_id). Esto significa que no puede tener dos filas en esa tabla que tengan el mismo object_id y term_taxonomy_id.
Aunque esto sucedió porque al establecer el tercer parámetro de inserción en una cadena vacía, intenta insertar filas con object_id=0 y term_taxonomy_id=0 una y otra vez.