我创建了一个导入工具,用于从json文件导入数据,以便在我的自定义帖子类型中创建帖子。一切运作良好,我可以导入acf字段以及指定的术语。我的问题是,如何导入分配给该术语的子术语。
我现在有两个收集数据的变量。我希望有变量eventCategoryChildName将其vaule作为子项分配给eventCategoryID
$eventCategoryChildName = $ev['OfficialCity'];
$eventCategoryId = $ev['RegionID'];
以下是没有子条款的条款导入功能:
// set category terms
$cat_ids = $eventCategoryName;
// Add these categories, note the last argument is true.
wp_set_object_terms( $post_id, $cat_ids, 'lan', true );
编辑:
所以我设法导入与正确父母相关联的孩子,但他们没有被检查到帖子
// set category terms
$cat_ids = $eventCategoryName;
// Import category name
$term_taxonomy_ids = wp_set_object_terms( $post_id, $cat_ids, 'lan', true );
$parent_term = wp_set_object_terms( $post_id, $cat_ids, 'lan', true );
// Check terms import for errors
if ( is_wp_error( $term_taxonomy_ids ) ) {
// There was an error somewhere and the terms couldn't be set.
echo $return->get_error_message();
} else {
// Success! These categories were added to the post.
}
$parent_term = term_exists( $eventCategoryName, 'lan' );
wp_insert_term(
$eventCategoryChildName, // Customize as you wish
'lan',
array(
'parent' => $parent_term['term_id'],
'slug' => $eventCategoryChildName // Customize as you wish
)
);
if ( !is_wp_error( $child_term_result ) ) {
wp_set_object_terms( $post_id, $child_term_result['term_id'], 'lan', true );
}
答案 0 :(得分:0)
首先,您应该检查wp_set_object_terms
的结果,看看是否返回了错误:
$term_taxonomy_ids = wp_set_object_terms( $post_id, $cat_ids, 'lan', true );
if ( is_wp_error( $term_taxonomy_ids ) ) {
// There was an error somewhere and the terms couldn't be set.
echo $return->get_error_message();
} else {
// Success! These categories were added to the post.
}
然后,您要添加的术语可能不存在。在这种情况下,wp_set_object_terms
将返回invalid_taxonomy
错误。因此,您可能希望在分类中添加这样的缺失术语:
wp_insert_term(
'Term Name', // Customize as you wish
'lan',
array(
'description' => 'Term desc', // Customize as you wish
'slug' => 'lan-slug1' // Customize as you wish
)
);
// For child term:
$parent_term = term_exists( 'parent_term_id', 'lan' );
$child_term_result = wp_insert_term(
'Child Term Name', // Customize as you wish
'lan',
array(
'parent' => $parent_term['term_id']
'description' => 'Term desc', // Customize as you wish
'slug' => 'lan-slug1' // Customize as you wish
)
);
// Add the child term to the post
if ( !is_wp_error( $child_term_result ) ) {
wp_set_object_terms( $post_id, $child_term_result['term_id'], 'lan', true );
}
最后,请确保在-at至少 - Wordpress的init
挂钩之后执行此代码。例如:
function parse_my_json() {
// Your code here
}
add_action('init','parse_my_json');
有用的参考资料: