Wordpress - Удалить все теги по идентификатору записи - PullRequest
2 голосов
/ 28 июля 2010

У меня есть функция добавления тега по идентификатору записи, но теперь я хотел бы удалить все текущие теги для этого идентификатора перед добавлением моих новых тегов?

Кто-нибудь знает встроенную функцию или запрос WordPress для этого?

-Hudson

Ответы [ 3 ]

2 голосов
/ 28 июля 2010

Если вы можете получить доступ к базе данных напрямую (PhpMyAdmin), самый быстрый способ - запрос SQL.

Посмотрите на схему базы данных в кодексе:

DELETE FROM wp_term_relationships
WHERE wp_term_relationships.object_id = 'yourPostId'
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.taxonomy = 'post_tag';

ПРЕДУПРЕЖДЕНИЕ: очевидно, что изменение базы данных напрямую опасно.Будьте осторожны при этом.

1 голос
/ 28 июля 2010

Должно помочь вам добраться:

Wordpress API: добавление / удаление тегов в сообщениях

Я нашел эту функцию: wp_delete_term Посмотрите, поможет ли она вам ...

0 голосов
/ 28 июля 2010

Я сложил это вместе. Это просто работа с базой данных, потому что я считаю, что нет быстрой функции для удаления тега с помощью идентификатора (но я все еще не уверен на 100%).

//define array of tags
$tags = array("new tag","new tag 2");     
//define post ID
$val = 254;

 //delete tags associated to post id
$query = "SELECT * FROM ".$table_prefix."term_relationships tr JOIN ".$table_prefix."term_taxonomy tt ON tr.term_taxonomy_id=tt.term_taxonomy_id WHERE tr.object_id='$val' AND tt.taxonomy='post_tag'";
$result = mysql_query($query);
if (!$result){echo $query; echo mysql_error();}

while ($arr = mysql_fetch_array($result))
{
        $tid = $arr['term_taxonomy_id'];
        $query2 = "DELETE FROM ".$table_prefix."term_relationships WHERE term_taxonomy_id='$tid'";
        $result2 = mysql_query($query2);
        if (!$result2){echo $query2; echo mysql_error();}
}


//add tags to post id           
wp_add_post_tags($val,$tags);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...