Пример плагина для WordPress для агентства недвижимости - vorst.ru

Недвижимость


плагин для агентств недвижимости

Плагин для агентства недвижимости. Плагин для WordPress позволяет вести базу данных объектов недвижимости. Плагин поможет быстро создать сайт для агентства недвижимости.

Недвижимость

плагин для агентств недвижимости

Привлекательность WordPress в большом количестве тем оформления. Иллюзия легкости, с которой можно поменять тему, не дает покоя разработчикам. Сейчас на WordPress работают даже магазины.

Чтобы разобраться, как это возможно, я решил написать плагин для агенств недвижимости. Расширять структуру данных не хотелось - это уже будет не WordPress. Решил сохранять JSON-определения объектов недвижимости в поле post_content и преобразовывать эти определения "на лету" - Demo, GitHub


Выглядит подобное определение следующим образом

[metaslider id=27]{
what:"flat",
deal:"0sell",
type:"2hand",
country:"Russia",
state:"Tatarstan",
city:"Kazan",
district:"Novo-Savinovsky",
locality:"",
street:"Воровского, 23",
lng:"49.077515",
lat:"55.840513",
rooms:1,
total:31,
living:19,
kitchen:6,
lot:0,
project:"hru",
material:"panel",
floor:2,
floors:5,
price:2370000,
phone:1231345,
email:"example@gmail.сom",
description:"EXAMPLE! Center of the life.! All in step availability."
}

Это определение легко можно преобразовать в стандартное JSON-определение и далее в модель. Далее, уже список моделей, можно проверять на соответствие критериям поиска и выводить на экран. Те, что подходят.

public function criteria( $query ) {
    global $wpdb;
    if ( $query->is_home() && $query->is_main_query() ) {
        $q = "SELECT ID, post_content, post_title FROM $wpdb->posts " . 
            "WHERE post_status = 'publish' AND post_type = 'post'"; 
        $ads = $wpdb->get_results( $q ); 
        // fill in $models
        $models = [];
        foreach ($ads as $ad) {  
            if ( $this->is_definition($ad->post_content) ) {
                $model = $this->convert( $ad->post_content );
                $model->title = $ad->post_title;
                $model->shortcode = $this->get_shortcode( $ad->post_content );
                $models[$ad->ID] = $model;
            }  
        }
        $this->setParams();
        $this->points = [];
        // no ID with 0, so it's mean nothing found 
        $ids = [0];
        // choce models by criteria
        foreach ( $models as $id => $model ) {
            if($this->condition($model)) {
                $ids[] = $id;
                if(self::GEOCODER)
                    $this->setPoint($model);
            }
        }
        // set new query
        $query->set( 'post__in', $ids );
    }
}

Вызов метода происходит по событию pre_get_posts то есть перед тем, как будут загружены посты. Чтобы вызов состоялся, нужно повесить крюк при старте плагина.

add_action( 'pre_get_posts', [ $this, 'criteria' ] );

Такова идея. Как это работает, можно посмотреть на Demo сайте. Здесь можно почитать рекламный спич. А на GitHub почитать, как можно настроить плагин под себя.

Заключение

Плагин для агенств недвижимости работает из коробки. Тем не менее он может меняться под нужды приложения.

Оставьте комментарий

Только авторизованные посетители могут оставлять комментарии. Пожалуйста, войдите или пройдите регистрацию.