这有点令人困惑,the documentation 对于wp_set_post_terms()
声称$taxonomy
参数是“可选的”,但从源代码来看,这意味着它的默认值是post_tag
如果你省略了这个论点。如果你试图通过null
或者一个空字符串,它将不起作用。
因此,我认为解决方案是首先获取给定ID的分类,然后分别设置每个分类的术语。
$post_id = 123; // For example.
$term_ids = [ 1, 2, 3 ]; // For example.
$terms = [];
foreach ( $term_ids as $term_id ) {
$term = get_term( $term_id );
$terms[$term->taxonomy][] = $term_id;
}
foreach ( $terms as $taxonomy => $term_ids ) {
wp_set_post_terms( $post_id, $term_ids, $taxonomy );
}