Я знаю, что это простая операция, но я не могу найти какой-либо ресурс или документацию, которая объясняет, как программно добавлять и удалять теги в сообщение, используя идентификатор сообщения.
Ниже приведен пример того, что я использую, но он, кажется, перезаписывает все другие теги …
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()
ожидает, что вторым параметром будет массив.
Поскольку WordPress 3.6 существует wp_remove_object_terms( $object_id, $terms, $taxonomy )
который делает именно это.
Параметр $terms
представляет собой slug(s)
или ID(s)
term(s)
для удаления и принятия массива, int или строки.
Источник: http://codex.wordpress.org/Function_Reference/wp_remove_object_terms
Что делать, если вы не знаете идентификатор сообщения? Вы просто хотите добавить тег ко всем новым сообщениям?
При использовании функции WordPress API add_action('publish_post', 'your_wp_function');
, функция, которую вы вызываете автоматически, получает post_id
введенный в качестве первого аргумента:
function your_wp_function($postid) { }
Фактически, 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_
) APPEND / ADD к существующим условиям. Счастливое кодирование!