動作しない理由:$wpdb->insert
の3番目のパラメータを設定しないでください 文字列を空にします。それに応じてすべてのフィールドをフォーマットします。
現在の機能は次のとおりです。
$wpdb->insert($table, array(
'object_id' => sprintf('', $num_object_id),
'term_taxonomy_id' => sprintf('', $num_taxo_id),
'term_order' => sprintf('', 0)
));
本当に3番目のパラメータを設定したい場合は、次のようにする必要があります。
$wpdb->insert($table, array(
'object_id' => $num_object_id,
'term_taxonomy_id' => $num_taxo_id,
'term_order' => 0
), array('%d', '%d', '%d'));
エラーについて:wp_term_relationshipsテーブルには(object_id、term_taxonomy_id)に一意の主キーがあります。これは、同じobject_idとterm_taxonomy_idの両方を持つ2つの行をそのテーブルに含めることができないことを意味します。
これは、insertの3番目のパラメーターを空の文字列に設定することにより、object_id=0およびterm_taxonomy_id=0の行を何度も挿入しようとしているために発生しました。