wp_add_post_tags($thePostID, $target);
假设$target
是标记的slug或ID。并非所有可能的值都是有效的标记段塞,这就是sanitize_title_with_dashes
已使用。
因此,真正的问题是,这些标签没有人类友好的名称,只有一个鼻涕虫。
因此,取而代之的是,获取术语,使用其ID,如果它不存在,则创建它并使用新的术语ID
获取术语:
$name = str_replace("\'","\'\'",str_replace(";","",$query));
$slug = sanitize_title_with_dashes($name);
$term = get_term_by( \'slug\', $slug, \'tag\' );
如果未找到:
if ( false === $term ) {
然后创建标记:
$term = wp_insert_term( $name, \'tag\', [
\'slug\' => $slug
]);
最后,将其添加到您的帖子中:
}
wp_set_object_terms( $post_id, $term, \'tag\', true );
注意,我通过消除所有
tag
helper函数,直接使用术语和分类法函数。为什么要学习一组全新的标记函数,然后再学习分类法,每个函数的行为都略有不同,而您可以学习一组对所有函数都相同的函数
性能和功能
整个方法都不利于性能、扩展和数据库负载,因为它会在前端进行更改。这会使您的整个站点变得更慢。
此外,它使页面缓存变得不可能,添加到其中的任何页面缓存或查询缓存都会导致此功能失败或变得非常不可靠。
相反,您是否考虑过使用Google Analytics或Jetpack stats自动跟踪此信息?