wordpress:wp_set_object_terms(建立物件和分類法的關係)的用法
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,14Tk => $v) { wp_set_object_terms(14TpostT); 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,能不用數組的就不用數組。這樣,往往會減少一些麻煩。