Med hensyn til hvorfor det ikke virker:Indstil ikke den tredje parameter for $wpdb->insert
for at tømme streng. Den formaterer hvert felt i overensstemmelse hermed...
Hvad den gør nu, svarer til:
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
Hvis du virkelig ønsker at indstille tredje parameter, skal du gøre:
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
Hvad angår fejl:tabellen wp_term_relationships har en unik primær nøgle på (object_id, term_taxonomy_id). Det betyder, at du ikke kan have to rækker i den tabel, som både har samme objekt-id og term_taksonomi_id.
Selvom dette er sket, fordi du ved at indstille tredje parameter for indsæt til tom streng, forsøger at indsætte rækker med object_id=0 og term_taxonomy_id=0 igen og igen.