我想更新现有帖子的条款。例如,我有分类“job_listing_type” 以下是此分类法的条款。 保姆,草坪割草,叶耙,宠物坐,植物浇水,铲雪。 它的工作岗位。现在我已经发布了一份工作,并为这篇文章选择了“保姆”类别。 现在,“保姆”一词是为帖子设定的。现在我想编辑我的职位,并希望为这篇文章设置“草坪割草”类别。我正在使用此代码
wp_set_post_terms( $_POST['postid'], $_POST['job_type'], 'job_listing_type' );
//$_POST['postid'] has post id.
// $_POST['job_type'] has name of term. In this case, it is Lawn Mowing
//job_listing_type is custom taxonomy
现在我想取消之前设定的术语(保姆),然后设置新的“草坪割草” 但是上面的代码添加了一个新术语“草坪割草”,然后设置它。正如我从codex中理解的那样,它应首先检查,如果该术语不存在,那么它应该添加新的并设置它。 我也用过
wp_set_object_terms( $_POST['postid'], $_POST['job_type'], 'job_listing_type' );
但两者都有相同的结果 提前谢谢
答案 0 :(得分:2)
hierarchial
设置时,Custom Taxonomies可能会有点混乱。
分类&标签非常相似,但一个主要的区别(我认为这可能是混乱)是类别是分层的而标签不是。
当您注册job_listing_type
时,(使用register_taxonomy
)您是否将层次结构设置为true或false?
如果hierarchical
设置为true(意味着它类似于帖子类别),则函数wp_set_post_terms()
需要接收该字词 ID < / strong>(而不是它的名字)。您可以使用term_exists()
通过名称获取ID,然后使用该ID来调用wp_set_post_terms()
如果hierarchical
设置为false(意味着它与帖子标记类似),那么函数wp_set_post_terms()
将接受名称。
如果我正确理解了您的问题,我相信您会先获取一个字词的ID,然后使用它来拨打wp_set_post_terms()
。
答案 1 :(得分:0)
我也有同样的问题,但下面的解决方案适合我。
代码中的问题是,当你得到术语的ID时,你必须在数组中发送它,比如
wp_set_post_terms( $postid, array( $jobtype_id), 'job_listing_type' );
希望这对你有用。
答案 2 :(得分:0)
我有类似的问题。 我通过确保ID是一个Intervals数组而不是一个字符串或字符串数组来解决它。
您可以这样做:
$integerIDs = array_map('intval', $_POST['job_type']);
$integerIDs = array_unique($integerIDs);
wp_set_post_terms( $_POST['postid'], $integerIDs, 'job_listing_type' );
它也由官方文档推荐: https://codex.wordpress.org/Function_Reference/wp_set_object_terms
答案 3 :(得分:0)
问题出在函数第4个参数wp_set_post_terms
用作
wp_set_object_terms( $_POST['postid'], $_POST['job_type'], 'job_listing_type', false );
如果您将其与真正的第4个参数一起使用,它将每次通过删除现有的分类来添加新的分类法
希望这会有所帮助。