Warum es nicht funktioniert:Setzen Sie den dritten Parameter von $wpdb->insert
nicht zu einer leeren Zeichenfolge. Es formatiert jedes Feld entsprechend..
Was es jetzt tut, ist äquivalent zu:
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
Wenn Sie wirklich den dritten Parameter setzen möchten, sollten Sie Folgendes tun:
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
Was den Fehler betrifft:Die wp_term_relationships-Tabelle hat einen eindeutigen Primärschlüssel (object_id, term_taxonomy_id). Das bedeutet, dass Sie nicht zwei Zeilen in dieser Tabelle haben können, die beide dieselbe object_id und term_taxonomy_id haben.
Dies ist jedoch passiert, weil Sie durch das Setzen des dritten Parameters von insert auf eine leere Zeichenfolge versuchen, Zeilen mit object_id=0 und term_taxonomy_id=0 immer wieder einzufügen.