{"id":18,"date":"2026-09-16T10:28:31","date_gmt":"2026-09-16T10:28:31","guid":{"rendered":"https:\/\/docs.latw.ai\/uncategorized\/introduction\/"},"modified":"2026-09-16T10:28:31","modified_gmt":"2026-09-16T10:28:31","slug":"introduction","status":"publish","type":"post","link":"https:\/\/docs.latw.ai\/pl\/esti-to-wordpress\/introduction\/","title":{"rendered":"Introduction"},"content":{"rendered":"<h1>What the plugin does<\/h1>\n<p>Esti To WordPress pulls real estate offers from an Esti CRM account and publishes them on a WordPress site: an archive<br \/>\nwith filters, a full page for every offer, an agent card and structured data for search engines.<\/p>\n<h2>The one rule that explains everything else<\/h2>\n<p><strong>Esti CRM is the source of truth. WordPress only displays a copy.<\/strong><\/p>\n<p>Every synchronization overwrites the imported content. Nothing you type into an offer in WordPress survives the next<br \/>\nrun, which is why the plugin does not let you create or edit offers in the first place: in the editor an offer has a<br \/>\ntitle and nothing else, and the &#8220;Add New&#8221; button is switched off. If a description, a price or a photo is wrong, fix it<br \/>\nin Esti CRM and wait for the next synchronization (or press <strong>Sync now<\/strong>).<\/p>\n<h2>What gets imported<\/h2>\n<ul>\n<li>Offers that are <strong>active<\/strong> in Esti CRM (status &#8220;active&#8221;) and <strong>cleared for online export<\/strong> by the owner. Both<br \/>\nconditions are enforced always and cannot be configured.<\/li>\n<li>On top of that, your own import filter: offer types, subtypes, cities, transaction and a price range.<br \/>\nSee <a href=\"\/esti-to-wordpress\/settings\">Settings reference<\/a>.<\/li>\n<li>The <strong>agent directory<\/strong> \u2014 name, photo, role and office \u2014 refreshed with every run and matched to offers by the Esti<br \/>\nagent ID.<\/li>\n<li>A <strong>value dictionary<\/strong> that turns numeric codes in the Esti payload (fencing, heating, ownership, \u2026) into readable<br \/>\nlabels.<\/li>\n<\/ul>\n<h2>What happens on the site<\/h2>\n<table>\n<thead>\n<tr>\n<th>Thing<\/th>\n<th>Where it lives<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Every offer<\/td>\n<td>A post of the <code>osfec_offer<\/code> type, published under <code>\/{archive-slug}\/{offer-slug}\/<\/code><\/td>\n<\/tr>\n<tr>\n<td>The listing<\/td>\n<td>The archive at <code>\/{archive-slug}\/<\/code>, with a filter bar and sorting<\/td>\n<\/tr>\n<tr>\n<td>Offer lists elsewhere<\/td>\n<td>The <strong>Offers<\/strong> block, or the <code>[osfec_offers]<\/code> shortcode<\/td>\n<\/tr>\n<tr>\n<td>Photos<\/td>\n<td>Hotlinked from the Esti CDN \u2014 never copied into the Media Library<\/td>\n<\/tr>\n<tr>\n<td>Search engines<\/td>\n<td>JSON-LD (<code>RealEstateListing<\/code>) printed in the page head<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Deliberate limits<\/h2>\n<p>Knowing these up front saves a support ticket:<\/p>\n<ul>\n<li><strong>Photos are not in the Media Library.<\/strong> They are loaded straight from Esti&#8217;s servers. You cannot crop them,<br \/>\nregenerate thumbnails or pick a different featured image. If Esti removes a photo, it disappears from the site.<\/li>\n<li><strong>No contact form to Esti.<\/strong> The plugin never sends anything back to the CRM; the agent card offers a phone number and<br \/>\nan e-mail address.<\/li>\n<li><strong>No custom database tables and no taxonomies.<\/strong> Offers are ordinary posts, and everything else is post meta. Offer<br \/>\ntypes and cities are not categories, so you cannot assign them by hand.<\/li>\n<li><strong>No multilingual layer.<\/strong> The plugin&#8217;s own interface is translatable, but offer data arrives in whatever language<br \/>\nEsti stores it in (usually Polish) and is saved as is.<\/li>\n<li><strong>Offers removed from Esti are removed here.<\/strong> When an offer stops being published in Esti, the matching post is<br \/>\npermanently deleted on the next successful run \u2014 it does not go to the Trash.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>What the plugin does Esti To WordPress pulls real estate offers from an Esti CRM account and publishes them on a WordPress site: an archive with\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_latwm_translated_slug":"","footnotes":""},"categories":[2],"tags":[],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-esti-to-wordpress"],"_links":{"self":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/comments?post=18"}],"version-history":[{"count":1,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":43,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/18\/revisions\/43"}],"wp:attachment":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/media?parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/categories?post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/tags?post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}