Для реализации такого поведения в WordPress вам необходимо выполнить несколько действий:
1. **Создание архивной страницы для городов:**
- Убедитесь, что для кастомного типа записей "города" включена поддержка архивов. Это можно указать при регистрации типа записи с помощью параметра `'has_archive' => true` в функции `register_post_type()`.
- Создайте шаблон `archive-город.php` (где `город` - имя вашего кастомного типа для городов). WordPress будет использовать этот шаблон для отображения архива постов города.
2. **Создание кастомной таксономии для связи недвижимости и городов:**
- Вы можете использовать таксономии для организации связи между двумя типами постов. Например, создайте таксономию `города` в коде вашей темы при помощи функции `register_taxonomy()` и свяжите её с кастомным типом постов "недвижимость".
3. **Добавление метабоксов для выбора города:**
- Как вы уже упомянули, добавляете возможность выбора города при создании или редактировании недвижимости, чтобы у каждой недвижимости был указан конкретный город.
4. **Генерация ссылки для страницы города:**
- Когда вы добавляете запись недвижимости, привязываете её к городу, используя таксономию. Это позволяет выводить на странице недвижимости ссылки на страницу города.
5. **Создание страницы всех недвижимостей для города:**
- На странице архива `archive-город.php` используйте WP_Query или get_posts, чтобы выбрать все посты типа "недвижимость", которые связаны с текущим городом. Для фильтрации можно использовать параметр таксономии в вашем запросе.
6. **Отображение связанных постов:**
- На странице города вы можете использовать цикл WordPress для отображения всех записей недвижимости, относящихся к данному городу.
Пример кода для архивного шаблона `archive-город.php`, который выводит все связанные посты недвижимости:
```php
<?php
get_header();
// Предполагаем, что ваша таксономия называется 'города_tax', а тип поста - 'недвижимость'
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Выводим информацию о городе
the_title();
the_content();
endwhile;
// Теперь выведем недвижимость в этом городе
$term = get_queried_object();
$args = array(
'post_type' => 'недвижимость',
'tax_query' => array(
array(
'taxonomy' => 'города_tax',
'field' => 'slug',
'terms' => $term->slug,
),
),
);
$недвижимость_query = new WP_Query( $args );
if ( $недвижимость_query->have_posts() ) :
while ( $недвижимость_query->have_posts() ) : $недвижимость_query->the_post();
// Выводим информацию о недвижимости
the_title();
// Вывод