Вы можете сделать следующим образом. Создайте два пост тайпа photo и video. Для каждого свою таксономию photo_cat и video_cat. Теперь соберите два массива, один с таксономиями, другой со списком городов:
$termsArray = array( 'photo_cat ', 'video_cat' );
$startArray = array(
'mos' => 'Москва',
'len' => 'Санкт-Петербург',
'nsk' => 'Новосибирск',
'ekb' => 'Екатеринбург',
);
Теперь вы можете циклом их создать
foreach ( $startArray as $key => $startItem ) {
foreach ( $termsArray as $termsItem ) {
// Проверяем, что такого термина еще не существует
$termID = get_term_by( 'slug', $key, $termsItem )->term_id ?: '0';
if ( $termID == '0' ) {
$termArgs = array(
'cat_ID' => $termID,
'cat_name' => $startItem,
'category_description' => '',
'category_nicename' => $key,
'category_parent' => '',
'taxonomy' => $termsItem
);
$termID = wp_insert_category( $termArgs );
// пишем ошибку/ успех
if( is_wp_error($termID) ) {
var_dump('Ошибка инсерта термина ' . $startItem . ' таксономии ' . $termsItem . ': ' . $termID->get_error_message())
} else {
var_dump('Термин ' . $startItem . ' таксономии ' . $termsItem . ' опубликован удачно!');
}
} // end if $termID == '0'
} // end foreach $termsArray
} // end foreach $startArray
Преимущество этого способа в том, что находясь на странице с одной таксономией вы можете получить посты другой, т.к. вы знаете текущий слаг таксономии
Чтобы сделать общий архив "Фотографы", укажите аргумент 'has_archive'. Чтобы таксономия была в хлебных крошках, нужно нужно написать правила реврайтов ссылок в аргументе 'rewrite'