Set post terms by term id

时间:2011-10-17 作者:Daithí

我正在尝试在自定义分类法中向自定义术语添加post。我不确定我是否正确处理了这个问题。到目前为止,我们有自定义taxomony“仓库”和自定义术语“旧库存”。

问题是,当我尝试使用term\\u id将术语添加到帖子中时,它会创建一个以id作为名称的新术语。下面是我使用的代码:

//add new product
    $id = @wp_insert_post(array(
        \'post_title\' => $name,
        \'post_content\' => $desc,
        \'post_status\' => \'publish\',
        \'post_parent\' => $parent,
        \'tax_input\' => array(
            array(
                \'warehouse\' => $parent
            ))
        ), true);

    //set terms
    wp_set_object_terms($id, array($parent), "warehouse");
如您所见,我已尝试将术语\\u id添加为\'post_parent\' as\'tax_input\' 并使用\'wp_set_object_terms\'

如果term\\u id是25,那么上面将创建一个称为“25”的新术语!而不是把这个帖子贴在id为25的学期里。

谢谢你的帮助,干杯

1 个回复
最合适的回答,由SO网友:Daithí 整理而成

在处理这个问题时,原来$parent var必须转换为int。查看函数wp\\u set\\u object\\u terms,它使用is\\u int()测试参数$parent。var$父项来自使用ajax通过http POST发送的$\\u POST。

在这个过程中的某个地方,可能在javascript方面,我的int$父对象被转换为字符串。我假设var中添加了一个新行字符或其他内容,从而使php认为它是一个字符串。

然后,解决方案是将var$父对象转换为int,如下所示:(int)$parent

所以将最后一行更改为

wp_set_object_terms($id, (int)$parent, "warehouse");
解决了问题;)

结束

相关推荐

Get_Terms()多少才是太多?

我正在修改我的一个插件,当我注意到wp_count_terms() 反映的号码与呼叫的号码不同count( get_terms() ) 使用相同的$args传递。我很确定这是WordPress中的一个bug,我将在稍后提交一份trac记录单。我想得到一个可靠的工作解决方案,所以我只打了一个电话给get_terms() 然后使用count() 以获取计数。我的问题是:“有多少条款可以在不拖慢一切的情况下被退回”。在分类法中有很多术语的情况下,可能会出现缩放问题,但有多少术语太多了?1000?10000?只是