Wordpress API:在帖子上添加/删除标签

时间:2010-03-12 23:11:08

标签: php wordpress-plugin wordpress

我知道这似乎是一个简单的操作,但我找不到任何资源或文档来解释如何使用帖子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;
}

6 个答案:

答案 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的参数:

  1. 帖子ID
  2. ...接受
    • 单个字符串(例如'Awesome Posts')
    • 现有代码的单个ID(例如1)或
    • 一个数组(例如数组('Awesome Posts',1))。
    • 注意:如果您提供了非身份证明,则自动创建标记。
  3. 分类法(例如,对于默认代码,请使用'post_tag')。
  4. 是否......
    • FALSE)使用提供的条款替换所有现有条款,或
    • TRUE_)附加/添加现有条款。
  5. 快乐的编码!