Импорт объектов недвижимости и агентов из ReCRM
Плагин: https://wordpress.org/plugins/recrm/
- Плагин выгружает информацию об объектах/агентах из ReCRM используя API http://api.recrm.ru/doc/index.html
- Позволяет настроить категории недвижимости для импорта объектов в зависимости от их типа.
- Сохраняет изображения агентов и объектов на сервере сайта.
- Установите плагин
- Перейдите в раздел с настройками плагина, заполните поля согласно их назначению.
- Ключ - необходимо запросить у поддержки ReCRM
- Cron - если эта опция не отмечена, импорт по крону запускаться не будет
- Водяной знак - накладывать watermark указанный в настройках ReCRM
- Скрытые объекты - выгружать объекты, у которых свойство hidden = true
- Активный статус - выгружать объекты, у которых свойство status = 0
- Успешный статус - выгружать объекты, у которых свойство status = 1
- Неудачный статус - выгружать объекты, у которых свойство status = 3
- Настройте ЧПУ для агентов и объектов недвижимости.
- Агенты с категориями - если необходимо, можно добавить таксономию для агентов
- Префикс страницы агентов - адрес с агентами относительно корня сайта, например /agents/
- Недвижимость с категориями - если необходимо, можно добавить таксономию для недвижимости. При отмеченной опции плагин позволяет автоматически определить нужные вам типа недвижимости в категориях.
- Префикс страницы недвижимости - адрес с объектами относительно корня сайта, например /estate/
- Если необходимо разместить разные типы недвижимости в разных категориях, создайте категории, перейдите в раздел с настройками плагина "Типы недвижимости и категории". Определите, какие типы недвижимости нужно отображать в созданных категориях.
- Нужно добавить define( 'DISABLE_WP_CRON', true ); в файл wp-config.php, так как процесс выгрузки потребляет много ресурсов
- Нужно добавить cron задачу для запуска wp-cron.php
* * * * * php /path/to/wp-cron.php > /dev/null - В связи с присутствием большого количества фотографий, скрипт сначала загрузит всю информацию во временные файлы. После того как файлы созданы, при каждом запуске cron задачи, скрипт поэтапно (по 30 объектов) начнет запись объектов в базу данных вместе с фотографиями. Переопределить количество импортируемых объектов за раз можно при помощи константы (int) RECRM_CHUNK_TEMP_FILES
- Обратиться в службу поддержки https://recrm.ru/
- Указать ключ demo
- recrm_import_convert_phone - конвертирует номер телефона агента [^0-9+]
add_filter('recrm_import_convert_phone', function($phone, $phone_initial) {
//return $phone;
}, 10, 2);- recrm_store_tax_id - определяет таксономию для объекта недвижимости в зависимости от его свойства type_id
add_filter('recrm_store_tax_id', function($tax_id, $item) {
//return $tax_id;
}, 10, 2);- recrm_import_finish - срабатывает каждый раз после завершения крон задачи
- Объект/Агент будет помещен в корзину.
- Перейдите в "Настройки" - "Постоянные ссылки" - нажмите кнопку "Сохранить изменения"
Для агентов и объектов будут добавлены свойства, которые содержат информацию о загруженных медиафайлах.
recrm_gallery_agent и recrm_gallery_estate содержат массив из всех медиафайлов, которые были загружены для объекта/агента
Получить отдельно каждый тип медиафайла можно по свойствам:
- recrm_agent_thumbnail - миниатюра (фотография) агента
- recrm_estate_thumbnail - миниатюра (обложка) объекта
- recrm_estate_gallery_photos - фотографии объекта
- recrm_estate_gallery_layouts - планировки объекта
- recrm_estate_gallery_building - планировки здания объекта
В каждом свойстве сериализованный массив, в котором ключ это ID файла из базы данных, значение это внешний URL фотографии из ReCRM
Нужно добавить функцию к хуку save_post для перезаписи или добавлении нового значения. Пример:
function custon_save_post_recrm_estate($post_id, $post, $update)
{
$area = get_post_meta($post_id, 'recrm_estate_area', true);
$expl = explode(' ', $area);
update_post_meta($post_id, 'recrm_estate_area_num', $expl[0]);
}
add_action('save_post_recrm_estate', 'custon_save_post_recrm_estate', 10, 3);Нужно добавить фильтр recrm_store_tax_id. Пример:
add_filter('recrm_store_tax_id', function($tax_id, $item) {
if($item['recrm_estate_deal'] == 'аренда')
{
$tax_id = 16;
}
elseif($item['recrm_estate_deal'] == 'продажа')
{
$tax_id = 17;
}
return $tax_id;
}, 10, 2);