WP_SET_OBJECT_TERMS在CPT上不起作用,但wp_SET_POST_TERMS起作用

时间:2017-05-02 作者:Stephen

我有一个使用用户输入变量(逗号分隔的数字字符串)运行的函数,用于更新自定义分类法中的术语(按id)和自定义帖子类型。尽管the docs say 我应该使用wp_set_object_terms, 我只能通过使用wp_set_post_terms. 以下代码将起作用(使用wp_set_post_terms 但不使用wp_set_object_terms 最后):

if(isset($request[\'custom_tax\'])) {
$customtaxarray = explode(",",$request[\'custom_tax\']);
$only_integers = true;
foreach ($customtaxarray as $testcase) {
    if (!ctype_digit($testcase)) {
    $only_integers = false;
    }
    }
if ($only_integers) {
$customtax = $customtaxarray;
} else {

return array(
                \'code\' => \'missing_integers\',
                \'data\' => array(
                    \'status\' => 403,
                    \'message\' => "custom_tax must be one or more (comma separated) integers.",
                ),
            );
}
//update custom_tax
wp_set_post_terms($request[\'cpt_post_id\'], $customtax, \'custom_tax\' );

}

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

经过多次尝试和错误,我找到了一个允许使用wp\\u set\\u object\\u术语的解决方案。尽管已经检查了字符串是否为整数,但显然我也需要显式转换数组。所以我改变了这个:

$customtax = $customtaxarray;

对此:

$customtax = array_map(\'intval\',$customtaxarray);

突然间wp_set_object_terms 现在可以了。这并不能解释为什么wp_set_post_terms 而是在工作(除非它可能自动进行此转换?),但至少现在这一切都如期进行。

相关推荐

如何在使用wp_set_Object_Terms时返回新添加的术语

我正在使用wp\\u set\\u object\\u terms向我们的WooCommerce产品添加术语(属性):wp_set_object_terms($id, array($migrate_case), \'pa_case\'); 这为我们提供了自动创建不存在的术语的优势(而不是使用wp\\u set\\u post\\u terms)。有没有办法让wp\\u set\\u object\\u terms()告诉我是否必须创建新的术语?提前感谢您的帮助。