Помощь со структурой, как правильно и чтобы работало?

Всем привет. Ребята кто хорошо разбирается в Вордпресс. Помогите пожалуйста разобраться со структурой - правильно построить (связать друг с другом страницы. Есть 3 раздела со своими категориями и подкатегориями (компании, афиша, новости) и есть города в котором есть районы. Теперь нужно связать так чтобы все работало в рамках края (все города)

1) Например (афиша Области, новости Моск обл, Компании области. Все категории и подкатегории разделов чтобы тоже относились к области

2)Компании города, новости города, афиша города. Все категории и подкатегории разделов чтобы тоже относились к городу

3) Компании района города, новости района города, афиша района города. Все категории и подкатегории разделов чтобы тоже относились к району города.

Например: сайт/область/город/район/(афиша,новости,компании)/категория/подкатегория

Или: сайт/(афиша,новости,компании)/категории/подкатегории/область/город/район. P.s - районы города (будут тегами)

Ребят подскажите как правильно и что друг с другом связать чтобы получилась данная структура.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 2
lamer350
@lamer350
กำลังสูงสุด
Вам проще сделать мультисайт, посмотрите решения, в принципе чаще всего его и применяют при необходимости разделения по городам
Ответ написан
artzolin
@artzolin
php, WordPress разработка сайтов zolin.digital
Расскажу, как я понял вашу задачу. Самое главное для связи таких постов использовать одинаковую структуру в терминах, чтобы, находясь в термине 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 Я могу прислать весь массив в областями и их адмистративными центрами
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы