我知道这似乎是一个简单的操作,但我找不到任何资源或文档来解释如何使用帖子ID以编程方式添加和删除帖子的标签。
以下是我正在使用的示例,但它似乎覆盖了所有其他标记......
function addTerm($id, $tax, $term) {
$term_id = is_term($term);
$term_id = intval($term_id);
if (!$term_id) {
$term_id = wp_insert_term($term, $tax);
$term_id = $term_id['term_id'];
$term_id = intval($term_id);
}
$result = wp_set_object_terms($id, array($term_id), $tax, FALSE);
return $result;
}
答案 0 :(得分:5)
您需要先致电get_object_terms以获取已存在的所有条款。
更新了代码
function addTerm($id, $tax, $term) {
$term_id = is_term($term);
$term_id = intval($term_id);
if (!$term_id) {
$term_id = wp_insert_term($term, $tax);
$term_id = $term_id['term_id'];
$term_id = intval($term_id);
}
// get the list of terms already on this object:
$terms = wp_get_object_terms($id, $tax)
$terms[] = $term_id;
$result = wp_set_object_terms($id, $terms, $tax, FALSE);
return $result;
}
答案 1 :(得分:4)
尝试使用wp_add_post_tags($post_id,$tags)
;
答案 2 :(得分:2)
我是这样做的:
$tag="This is the tag"
$PostId=1; //
wp_set_object_terms( $PostId, array($tag), 'post_tag', true );
注意:wp_set_object_terms()
期望第二个参数是一个数组。
答案 3 :(得分:2)
自WordPress 3.6以来,wp_remove_object_terms( $object_id, $terms, $taxonomy )
完全正确。
$terms
参数表示要移除并接受数组,int或字符串的slug(s)
ID(s)
或term(s)
。
来源:http://codex.wordpress.org/Function_Reference/wp_remove_object_terms
答案 4 :(得分:1)
如果您不知道帖子ID怎么办?您只想将标签添加到创建的所有新帖子中?
使用WordPress API函数add_action('publish_post', 'your_wp_function');
时,您调用的函数会自动将post_id
注入为第一个参数:
function your_wp_function($postid) {
}
答案 5 :(得分:1)
实际上,wp_set_object_terms可以自行处理您需要的所有内容:
如果你真的需要一个单独的功能:
function addTag($post_id, $term, $tax='post_tag') {
return wp_set_object_terms($post_id, $term, $tax, TRUE);
}
wp_set_object_terms
的参数:
FALSE
)使用提供的条款替换所有现有条款,或TRUE_
)附加/添加现有条款。快乐的编码!