誰もがこれのために解決策を得ました...
私は、カスタムカテゴリとして機能する2つの独自の分類法があるアプリを作成しています。だから私はcat1とcat2の分類法を持っています。
私がやりたいことは、cat1からcat2への子と一緒に、用語をコピーすることです。たぶん何かのような:
set_term_taxonomy($term_id, array("cat1, "cat2"));
子と一緒に、同じ用語が複数の分類に含まれる可能性がある場合。 2つの分類法があるのは、それらが2つの異なる店舗在庫であるためです。
それを行うためのメソッドを書く必要がありました。これがその方法です。
構文:
copy_terms($term->term_id, "taxonomy1", "taxonomy2", 0); //will copy to root of destination
/**
* Copy a term and its descendants from one taxonomy to another.
* Both taxonomies have to be hierarchical. Will copy across
* posts as well.
*
* @param int $term the term id to copy
* @param string $from the taxonomy of the original term
* @param string $to the destination for the taxonomy
* @param int $parent the parent term_id to add the taxonomy to
* @return type true|WP_Error
*/
function copy_terms($term, $from, $to, $parent=0) {
//check for child terms
$term = get_term($term, $from);
$child_terms = get_terms($from, array(
'hide_empty' => false,
'parent' => $term->term_id
));
//check for child products
$child_prods = new WP_Query(array(
'tax_query' => array(
array(
'taxonomy' => $from,
'terms' => $term->term_id
)
)
));
//work out new slug
if($parent==0) $slug = $to."-".sanitize_title($term->name);
else{
$parent_term = get_term($parent, $to);
$slug = $parent_term->slug."-".sanitize_title($term->name);
}
//add term to new taxonomy
$parent = wp_insert_term($term->name, $to, array(
'description' => $term->description,
'parent' => $parent,
'slug' => $slug
));
if(is_wp_error($parent)) return $parent;
$parent = get_term($parent['term_id'], $to);
if(is_wp_error($parent)) return $parent;
//loop through folders first
foreach($child_terms as $child){
copy_terms($child->term_id, $from, $to, $parent->term_id);
}
//loop through products
foreach($child_prods->posts as $child){
wp_set_post_terms($child->ID, $parent->term_id, $to, true);
}
return true;