Статьи помеченные filter
Пример написания WordPress плагина для недвижимости
WordPress плагин для агентств недвижимости
Привлекательность WordPress в большом количестве тем оформления. Иллюзия легкости, с которой можно поменять тему, не дает покоя разработчикам. Сейчас на WordPress работают даже магазины.
Чтобы разобраться, как это возможно, я решил написать плагин для агенств недвижимости. Расширять структуру данных не хотелось - это уже будет не WordPress. Решил сохранять JSON-определения объектов недвижимости в поле post_content
и преобразовывать эти определения "на лету" - Demo, GitHub
Поиск
Метки
Пример написания 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 почитать, как можно настроить плагин под себя.
Заключение
Плагин для агенств недвижимости работает из коробки. Тем не менее он может меняться под нужды приложения.
Оставить комментарий
Только авторизованные пользователи могут оставлять комментарии. Пожалуйста авторизуйтесь или пройдите регистрацию.
Можно авторизоваться, используя социальную сеть-
-
-
-