@Alexa_KyKi

Как создать иерархию с кастомным типом записи?

У меня есть 2 страницы на сайте: фотографы и видеографы. На каждой из этих страниц должны выводиться превью записей с перечнем городов. И вот когда переходишь на саму запись города в хлебных крошках должно быть следующее - "Главная - Фотографы - Москва".
При этом так же на сайте есть блог.
Изначально думала для городов сделать произвольный тип записи, но не пойму как тогда указать, что они относятся к странице фотографы, например, что б хлебные крошки выводились как указала выше. Можно так же сделать категорию Фотографы и уже у нее записи выводить..но очень не хотелось мешать эти записи с записями блога.
Подскажите, пожалуйста, может есть еще варианты как бы это правильнее сделать?
  • Вопрос задан
  • 30 просмотров
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Вы можете сделать следующим образом. Создайте два пост тайпа 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'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы