【发布时间】:2018-07-03 21:24:39
【问题描述】:
好的,这就是我想要实现的目标。我有一个名为“Campaigns”的自定义帖子类型和一个名为“Countries”的自定义分类,已分配给该广告系列帖子类型。当用户添加新国家(将新国家标记到活动中)时,我想复制当前帖子,将新帖子命名为刚刚分配的国家/地区名称,并将其设为当前帖子的子项。
目前,我正在使用“set_object_terms”并保存条款以确定已创建哪些新条款。然后我尝试为每个术语插入一个新帖子,但是我正在创建一个无限循环。我尝试创建一个全局来停止循环,但我遇到了一些问题。这就是我到目前为止所拥有的。
$GLOBALS['control_campaign_count'] = 0;
add_action('set_object_terms','save_terms',10,6);
function save_terms($object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids) {
//Assuming we only want terms from specific taxonomy
//If not simply remove this conditional
$our_taxonomy = 'country';
if($taxonomy == $our_taxonomy){
//Added terms are specified terms, that did not already exist
$added_tt_ids = array_diff($tt_ids, $old_tt_ids);
if ($append) {
//If appending terms - nothing was removed
$removed_tt_ids = array();
} else {
//Removed terms will be old terms, that were not specified in $tt_ids
$removed_tt_ids = array_diff($old_tt_ids, $tt_ids);
}
/*,
Currently we have the taxonomy term IDs */
foreach($added_tt_ids as $term){
$added_terms[] = get_term_by( 'term_taxonomy_id',$term,$taxonomy);
$name = $added_terms->name;
echo $name;
// Add New Post
add_action('wp_insert_post', 'add_new_campaign');
function add_new_campaign() {
if($GLOBALS['control_campaign_count'] === 1) {
return;
}
$GLOBALS['control_campaign_count']++;
$new_post_arguments = array(
'post_title' => 'Japan',
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'campaigns',
'post_parent' => 1156
);
$id = wp_insert_post($new_post_arguments);
update_post_meta($id, 'keywords');
}
}
foreach($removed_tt_ids as $term){
$removed_terms[] = get_term_by( 'term_taxonomy_id',$term,$taxonomy);
}
//$added_terms contains added term objects
//$removed_terms contains removed term objects
}
}
想法?对实现这一目标的更好方法的想法?提前谢谢你。
【问题讨论】: