{"id":20,"date":"2026-09-16T10:28:31","date_gmt":"2026-09-16T10:28:31","guid":{"rendered":"https:\/\/docs.latw.ai\/uncategorized\/publishing-offers\/"},"modified":"2026-09-16T10:28:31","modified_gmt":"2026-09-16T10:28:31","slug":"publishing-offers","status":"publish","type":"post","link":"https:\/\/docs.latw.ai\/pl\/esti-to-wordpress\/publishing-offers\/","title":{"rendered":"Publishing Offers"},"content":{"rendered":"<h1>Publishing offers on your site<\/h1>\n<p>Once offers are imported, three things exist without any work on your part:<\/p>\n<ul>\n<li><strong>The archive<\/strong> \u2014 every offer, with a filter bar and sorting, at <code>\/{archive-slug}\/<\/code> (by default <code>\/offers\/<\/code>).<\/li>\n<li><strong>A page per offer<\/strong> \u2014 photo slider, key figures, description, agent card, at <code>\/{archive-slug}\/{offer-slug}\/<\/code>.<\/li>\n<li><strong>The Offers block<\/strong> \u2014 for putting a hand-picked list of offers on any page you like.<\/li>\n<\/ul>\n<p>This page is about the third one.<\/p>\n<h2>Adding offers to a page<\/h2>\n<ol>\n<li>Edit the page in the block editor.<\/li>\n<li>Add the <strong>Offers<\/strong> block (search for &#8220;Offers&#8221;).<\/li>\n<li>Set its options in the sidebar.<\/li>\n<\/ol>\n<p>Everything the block does, the shortcode <code>[osfec_offers]<\/code> also does, with the same option names \u2014 handy in a widget, a<br \/>\npage builder or a theme that is not block based.<\/p>\n<h2>Recipes<\/h2>\n<p><strong>Three newest offers on the home page, with a link to the full listing:<\/strong><\/p>\n<pre><code>[osfec_offers limit=\"3\" columns=\"3\" more=\"yes\"]<\/code><\/pre>\n<p><strong>Apartments in Bia\u0142ystok, six of them, in a two-column grid:<\/strong><\/p>\n<pre><code>[osfec_offers type=\"mieszkanie\" city=\"Bia\u0142ystok\" limit=\"6\" columns=\"2\"]<\/code><\/pre>\n<p><strong>A searchable listing on a landing page, not just on the archive:<\/strong><\/p>\n<pre><code>[osfec_offers filters=\"yes\" limit=\"12\"]<\/code><\/pre>\n<p><strong>A custom label on the link to the archive:<\/strong><\/p>\n<pre><code>[osfec_offers limit=\"3\" columns=\"3\" more=\"See all homesteads\"]<\/code><\/pre>\n<p>The full option list is in the <a href=\"\/esti-to-wordpress\/shortcode-and-block-reference\">Shortcode and block reference<\/a>.<\/p>\n<h2>Two things that surprise people<\/h2>\n<p><strong>Type and city values are the ones Esti sends.<\/strong> They are Polish, because the data is Polish: <code>type=\"mieszkanie\"<\/code>,<br \/>\n<code>city=\"Bia\u0142ystok\"<\/code>. If a value produces an empty list, check the spelling against the dropdowns in the archive filter<br \/>\nbar \u2014 they list exactly the values your catalogue contains.<\/p>\n<p><strong>Visitor filters win over the block&#8217;s own settings.<\/strong> A block set to <code>city=\"Bia\u0142ystok\"<\/code> shows Bia\u0142ystok by default, but<br \/>\nif the visitor picks a different city in a filter bar on the same page, that choice wins. Block options are defaults,<br \/>\nnot locks. If you need a list that can never be filtered away, leave <code>filters=\"no\"<\/code> and do not put a filter bar on that<br \/>\npage.<\/p>\n<h2>Linking to a pre-filtered listing<\/h2>\n<p>Filters travel in the address, so any link can carry them. That makes them shareable, bookmarkable, cacheable and<br \/>\nvisible to search engines:<\/p>\n<pre><code>\/offers\/?city=bialystok                       Offers in Bia\u0142ystok\n\/offers\/?type=dzialka&amp;transaction=sale        Plots for sale\n\/offers\/?price_max=500000&amp;sort=price_asc      Up to 500,000, cheapest first<\/code><\/pre>\n<p>Note that the city in the address is the simplified form \u2014 <code>bialystok<\/code>, not <code>Bia\u0142ystok<\/code>. The parameter list is in<br \/>\nthe <a href=\"\/esti-to-wordpress\/shortcode-and-block-reference#url-parameters\">Shortcode and block reference<\/a>.<\/p>\n<h2>Offers in other blocks and page builders<\/h2>\n<p>The offer post type is available to the <strong>Query Loop<\/strong> block and to loop widgets in page builders such as Elementor, so<br \/>\nyou can lay offers out with the theme&#8217;s own design instead of the plugin&#8217;s cards.<\/p>\n<p>One caveat: <strong>offer photos are not in the Media Library<\/strong>. The plugin makes the featured image work anyway by feeding<br \/>\nthe Esti photo URL to the theme, so images do appear \u2014 but WordPress image sizes, cropping and responsive <code>srcset<\/code> do<br \/>\nnot apply to them.<\/p>\n<h2>Common questions<\/h2>\n<p><strong>An offer changed in Esti but not on the site.<\/strong> The site catches up on the next run \u2014 every six hours, or immediately<br \/>\nwith <strong>Sync now<\/strong> on the settings screen.<\/p>\n<p><strong>An offer disappeared from the site.<\/strong> Esti stopped publishing it (sold, archived, export switched off), or your import<br \/>\nfilter no longer accepts it. The run details in the <strong>Sync log<\/strong> say how many offers were removed.<\/p>\n<p><strong>The offer page shows &#8220;Price on request&#8221;.<\/strong> The price is hidden in Esti, or is not a positive number. Nothing to fix on<br \/>\nthe WordPress side.<\/p>\n<p><strong>A field is missing from the offer page.<\/strong> Empty fields are hidden by design rather than shown blank. Attributes that<br \/>\narrive from Esti as numeric codes \u2014 heating, fencing, ownership \u2014 also stay hidden while the value dictionary is<br \/>\nunavailable; the settings screen shows how many dictionary entries are cached.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Publishing offers on your site Once offers are imported, three things exist without any work on your part: The archive \u2014 every offer, with a filter\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-20","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\/20","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=20"}],"version-history":[{"count":1,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":47,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/posts\/20\/revisions\/47"}],"wp:attachment":[{"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.latw.ai\/pl\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}