登录

wordpress:wp_set_object_terms(创建对象和分类法的关系)的用法

作者:neo yang 时间:2021/08/22 读: 10129
wp_set_object_terms( int $object_id, str […]

wp_set_object_terms( int $object_id, string|int|array $terms, string $taxonomy, bool $append = false )

一、参数

$object_id

对象ID,比如post ID。

$terms

问题主要在这儿。

如果数据类型是字符串,就会把这个字符串作为slug,如果这个slug的term存在,则创建对象和这个term的关系,如果不存在,则先创建这个slug的term,然后创建对象和这个term的关系。

如果数据类型是整型,就会把这个值作为term的ID,如果这个ID的term存在,就会关联这个term。

如果数据类型是数组,无论怎么试,我都无法创建对象和term的关系。所以,对于数组,我是用foreach循环创建每一个关系的。

$taxonomy

分类法的slug,字符串。

$append

如果是false,则将原本的对象和term的关系覆盖更新。如果是true,则新建一条,即,对象和同一个taxonomy新增了一个term的关系。

二、代码

foreach ($custom_terms  as $key => $value) {
  if (is_array($value)) {
    foreach ($value  as $k => $v) {
      wp_set_object_terms($postid,(int)$v,$key,true);
//同一个taxonomy($key),使用true,将数组中所有的term和对象分别创建关系。
    }
  }else{
     wp_set_object_terms($postid,(int)$value,$key);
//从接口传来的数据都是字符串,为了保证$value是整形,使用了(int)。
  }
} 

三、返回

(array|WP_Error) Term taxonomy IDs of the affected terms or WP_Error on failure.

四、总结

WordPress的很多函数的参数,和wp_set_object_terms的参数一样,既可以使用字符串,也可以使用数字,甚至也可以使用数组的。但,从我自己的经验上来说,原则上,能用数字ID的,就尽量使用数字ID,能不用数组的就不用数组。这样,往往会减少一些麻烦。

标签:


copyright © www.lyustu.com all rights reserve.
Theme: TheMoon V3.0. Author:neo yang