我使用以下函数来检索帖子的标签,从数组中删除一个元素,然后将结果设置为帖子:
$post_tags = wp_get_post_terms( $post_id );
foreach ( $post_tags as $key => $tag) {
$tag_string = http_build_query( $tag );
if( 0 != strpos( $tag_string , \'tag-to-be-deleted\' ) ) {
unset( $post_tags[$key] );
}
}
wp_set_post_terms ($post_id, $post_tags, \'post_tag\');
然后我在wp\\u set\\u post\\u terms函数中发现了一个bug,它说$post\\u tags参数应该是字符串而不是数组。。。我做错了什么?
任何帮助都将不胜感激。
最合适的回答,由SO网友:Rarst 整理而成
你的代码看起来有点笨拙,http_build_query()
绝对不是为了这样。此外,您获取的不是简单的数组,而是标记对象的数组。
我的看法:
$post_tags = wp_get_post_terms( $post_id, \'post_tag\', array( \'fields\'=>\'names\' ) );
$pos = array_search( \'tag-to-be-deleted\', $post_tags );
if( false !== $pos ) {
unset( $post_tags[$pos] );
wp_set_post_terms ($post_id, $post_tags, \'post_tag\');
}