Я знаю, что это походит на простую операцию, но я не могу найти ресурс или документацию, которая объясняет, как программно добавить и удалить теги к сообщению с помощью идентификатора сообщения.
Ниже образец того, что я использую, но это, кажется, перезаписывает все другие теги...
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;
}
Сначала необходимо вызвать 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;
}
Попробуйте использовать wp_add_post_tags ($ post_id, $ tags)
;
Вот как я это делаю:
$tag="This is the tag"
$PostId=1; //
wp_set_object_terms( $PostId, array($tag), 'post_tag', true );
Примечание: wp_set_object_terms()
ожидает, что второй параметр будет массивом.