因此,WordPress不允许为一篇文章设置两个术语(在分类法中已经存在或是新的,没有区别),如果它们只存在一个重音/变音标记,则在后端编辑(编辑或快速编辑)时,会随机拒绝其中一个。经过几次测试,我发现这些术语仍然可以使用挂钩/过滤器添加到帖子中-save_post()
或save_post_{$post->post_type}
. 然而,这里也有一个问题:如果钩子被禁用,WordPress将在下次保存/更新帖子时随机删除这两个术语中的一个,因此我在这种情况下看到的唯一解决方案是在每次保存/更新帖子之前将有问题的术语添加到帖子中。考虑到邮政储蓄不是经常进行,这并不是一个很大的不便。
这是代码(我选择使用save_post_{$post->post_type}
挂钩):
add_action( \'save_post_your_post_type_slug\', function( $post_id ) {
$taxonomy = \'custom_taxonomy_slug\';
// terms to add; I mention that they were added earlier to the custom
// taxonomy and the taxonomy may contain other terms for other posts
$new_terms = array( \'Mânie\', \'Manie\' );
// get existing taxonomy terms as an array with their IDs and names
$tax_terms = get_terms( array( \'taxonomy\' => $taxonomy,
\'fields\' => \'id=>name\', \'hide_empty\' => false ) );
if( ! is_null( $tax_terms ) && ! empty( $tax_terms ) ) {
// check if the new terms exist in the custom taxonomy
$common_terms = array_intersect( $tax_terms, $new_terms );
if( ! is_null( $common_terms) && ! empty( $common_terms) ) {
// get IDs of new post terms
$terms_ids = array_keys( $common_terms );
// set new post terms
wp_set_post_terms( $post_id, $terms_ids, $taxonomy );
}
}
} );