vorst.ru - Статьи о задачах возникающих при создании сайта и их решении
vorst.ru
  • Главная
  • Цены
  • Блог
  • Поиск
  • Контакты
  • ru|en
Статьи помеченные filter

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

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

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

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

Читать далее
plugin, WordPress, json, real estate, class, hook, filter


Поиск


Метки

  • Wordpress
  • Yii2
  • Blog
  • Controller
  • Gallery
  • Google
  • Model
  • Module
  • Nested Set
  • Oauth2
  • Role
  • Rubric
  • Searching
  • Short Code
  • Social Network
  • Tree
  • Upload
  • Validation
  • View
  • Widget

Рубрики

About sites 5
--- RBAC 3
--- Comment 1
--- Authorisation 2
Data structure
--- Questionnaire 3
--- Nested Set 5
--- JSON in a post 1
API
--- Google 2
--- amoCRM 1
Searching
--- ElasticSearch 2
--- Posts chains 2
Speed up 1
--- Caching 1
Form
--- Upload 4
--- Validation 2

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

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 почитать, как можно настроить плагин под себя.

Заключение

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

plugin, WordPress, json, real estate, class, hook, filter

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

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

    Можно авторизоваться, используя социальную сеть

Copyright ©, vorst.ru, 2016-2019