Расскажу, как я понял вашу задачу. Самое главное для связи таких постов использовать одинаковую структуру в терминах, чтобы, находясь в термине samara, таксономии news вы могли получить нужные записи из термина samara таксономии activities
Структура, которую вы хотите у вас вряд ли получится. Скорее всего у вас будет три типа записи, и для каждого типа записи по две таксономии - категория и город
Покажу, как я программно публиковал области с их административными центрами для нескольких таксономий
// таксономии
$terms_array = array( 'activities', 'news' );
// области
$areas_array = array(
'AMU' => 'Амурская область',
'ARK' => 'Архангельская область',
'AST' => 'Астраханская область',
'BEL' => 'Белгородская область',
);
// административные центры
$cities_array = array(
'AMU' => 'Благовещенск',
'ARK' => 'Архангельск',
'AST' => 'Астрахань',
'BEL' => 'Белгород',
);
// цикл областей
foreach ( $areas_array as $keyI => $area_item ) {
$term_title = $area_item; // заголовок области
$term_slug = $keyI; // слаг области
$term_sub_title = $cities_array[$keyI]; // по слагу находим город
$term_sub_slug = urldecode( sanitize_title($term_sub_title) );
$term_sub_slug = preg_replace( '/([^a-z\d\-\_])/', '', $term_sub_slug ); // конвертируем город в слаг
// цикл таксономий
foreach ( $terms_array as $keyTI => $terms_item ) {
// публикуем область
$term_id = get_term_by( 'slug', $term_slug, $terms_item )->term_id ?: '0';
if ( $term_id == '0' ) {
$term_args = array(
'cat_ID' => $term_id,
'cat_name' => $term_title, // название категории. Обязательный.
'category_description' => '', // описание категории
'category_nicename' => $term_slug, // слаг категории
'category_parent' => '',
'taxonomy' => $terms_item
);
$term_id = wp_insert_category( $term_args );
// пишем ошибку/успех
if( is_wp_error($term_id) ) {
$log['error'][] = 'Ошибка инсерта термина ' . $term_title . ' таксономии ' . $terms_item . ': ' . $term_id->get_error_message();
} else {
$log['success'][] = 'Термин ' . $term_title . ' таксономии ' . $terms_item . ' опубликован удачно!';
}
} // end if $term_id == '0'
// публикуем административный центр
$term_sub_id = get_term_by( 'slug', $term_sub_slug, $terms_item )->term_id ?: '0';
if ( $term_sub_id == '0' ) {
$term_sub_args = array(
'cat_ID' => $term_sub_id,
'cat_name' => $term_sub_title, // название категории. Обязательный
'category_description' => '', // описание категории
'category_nicename' => $term_sub_slug, // слаг категории
'category_parent' => $term_id,
'taxonomy' => $terms_item
);
$term_sub_id = wp_insert_category( $term_sub_args );
// пишем ошибку/успех
if( is_wp_error($term_sub_id) ) {
$log['error'][] = 'Ошибка инсерта термина ' . $term_sub_title . ' таксономии ' . $terms_item . ': ' . $term_sub_id->get_error_message();
} else {
$log['success'][] = 'Термин ' . $term_sub_title . ' таксономии ' . $terms_item . ' опубликован удачно!';
}
} // end if $term_sub_id== '0'
} // end foreach $terms_array
} // end foreach $areas_array
PS Массив $log можно печатать или писать в файл log.txt
PSS Я могу прислать весь массив в областями и их адмистративными центрами