@xlo240

Как связать посты из двух произвольных типов записи?

Необходимо Реализовать связь между постами Недвижимость и Города - таким образом, чтобы к одному Городу было привязано несколько объектов недвижимости.

Пользователь может открыть страницу с объектом недвижимости и увидеть его город
пользователь может открыть страницу с городом и увидеть объекты недвижимости в этом городе
  • Вопрос задан
  • 471 просмотр
Решения вопроса 1
san_jorich
@san_jorich
Творческий кодер
Город - Таксономия Объекта недвижимости.
Объект - произвольный тип записи
if ( ! function_exists('add_estate_post_type') ) {

//  Регистрируем тип недвижиимость
function add_estate_post_type() {

	$labels = array(
		'name'                  => 'Объекты',
		'singular_name'         => 'Объект',
		'menu_name'             => 'Каталог недвижимости',
		'name_admin_bar'        => 'Каталог недвижимости',
		'archives'              => 'Архив объектов',
		'attributes'            => 'Аттрибуты объекта',
		'parent_item_colon'     => 'Главный объект',
		'all_items'             => 'Все объекты',
		'add_new_item'          => 'Доавить новый объект',
		'add_new'               => 'Добавить объект',
		'new_item'              => 'Новый объект',
		'edit_item'             => 'Редактировать объект',
		'update_item'           => 'Обновить объект',
		'view_item'             => 'Смотреть объект',
		'view_items'            => 'Смотреть объекты',
		'search_items'          => 'Найти объект',
		'not_found'             => 'Не найдено',
		'not_found_in_trash'    => 'В корхине не найдено',
		'featured_image'        => 'Featured Image',
		'set_featured_image'    => 'Установить фото объекта',
		'remove_featured_image' => 'Удалить фото объекта',
		'use_featured_image'    => 'Использовать в качестве фото объекта',
		'insert_into_item'      => 'Добавить к объекту',
		'uploaded_to_this_item' => 'Добавить к этому объекту',
		'items_list'            => 'Список объектов',
		'items_list_navigation' => 'Items list navigation',
		'filter_items_list'     => 'Фильтр объектов',
	);
	$rewrite = array(
		'slug'                  => 'estate',
		'with_front'            => true,
		'pages'                 => true,
		'feeds'                 => true,
	);
	$args = array(
		'label'                 => 'Объект',
		'description'           => 'Post Type Description',
		'labels'                => $labels,
		'supports'              => array( 'title' ),
		'taxonomies'            => array( 'estate' ),
		'hierarchical'          => true,
		'public'                => true,
		'show_ui'               => true,
		'show_in_menu'          => true,
		'menu_position'         => 5,
		'show_in_admin_bar'     => true,
		'show_in_nav_menus'     => true,
		'can_export'            => true,
		'has_archive'           => true,
		'exclude_from_search'   => false,
		'publicly_queryable'    => true,
		'query_var'             => 'post_type',
		'rewrite'               => $rewrite,
		'capability_type'       => 'page',
	);
	register_post_type( 'estate', $args );

}
add_action( 'init', 'add_estate_post_type', 0 );

}


И таксономия город (Локация, Район итд)
// Регистрация Районов (estate_district)
function estate_district_taxonomy() {

    $labels = array(
        'name'                       => 'Районы',
        'singular_name'              => 'Районы',
        'menu_name'                  => 'Районы',
        'all_items'                  => 'Все районы',
        'parent_item'                => 'Главный район',
        'parent_item_colon'          => 'Parent Item:',
        'new_item_name'              => 'Название нового района',
        'add_new_item'               => 'Добавить район',
        'edit_item'                  => 'Редактировать район',
        'update_item'                => 'Обновить район',
        'view_item'                  => 'Смотреть район',
        'separate_items_with_commas' => 'Добавление районов через запятую',
        'add_or_remove_items'        => 'Добавить или удалить район',
        'choose_from_most_used'      => 'Выбрать из наиболее популярных',
        'popular_items'              => 'Популярные районы',
        'search_items'               => 'Найти район',
        'not_found'                  => 'районов нет.',
        'no_terms'                   => 'Такого района нет.',
        'items_list'                 => 'Список районов',
        'items_list_navigation'      => 'Items list navigation',
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
        'show_in_quick_edit'         => true,
        'meta_box_cb'                => false,
    );
    register_taxonomy( 'estate_district', array( 'estate' ), $args );

}
add_action( 'init', 'estate_district_taxonomy', 0 );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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