在不知道分类的情况下按ID设置自定义帖子类型术语

时间:2019-02-20 作者:mistertaylor

对于具有多个分类法的自定义帖子类型,是否可以在不明确知道该术语属于哪个分类法的情况下设置帖子术语?

我有一个术语ID数组,其中可能包含来自三种分类法中任意一种的术语的混合。我发现唯一可以向cpt添加术语的函数是wp_set_post_terms 这需要分类slug。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这有点令人困惑,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 );
}

相关推荐

如何在新用户注册时将wp_USERS->用户登录名插入到wp_Terms中?

当新用户注册时,我需要将wp\\u users->user\\u login字段插入wp\\u terms name和slug字段。我的要求是管理员需要将帖子分配给特定用户,也就是说管理员需要向user1添加帖子,但user2不应该看到这一点。为此,我创建了一个自定义帖子,并为此添加了分类法。术语是用户用户名。因此,我需要在分类法中将用户的用户名作为术语列出。当一个新用户注册时,他的用户名也应该在wp\\u terms表中更新,所以我将用户名作为terms。我在这里绊倒了。请对此提出一些解决方案