{"id":361117,"date":"2026-08-31T08:01:48","date_gmt":"2026-08-31T08:01:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/erphome-pl-widget-rezerwacji-apartamentu\/"},"modified":"2026-09-02T14:59:37","modified_gmt":"2026-09-02T14:59:37","slug":"erphome-pl-widget-rezerwacji-apartamentu","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/erphome-pl-widget-rezerwacji-apartamentu\/","author":23553793,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"erphome.pl \u2014 Widget Rezerwacji Apartamentu","header_author":"ERP HOME Sp. z o.o.","header_description":"Embeds the booking widget from your ErpHome account (availability calendar + booking link) on your site \u2014 as a shortcode, Gutenberg block, or sidebar widget.","assets_banners_color":"f9f9f3","last_updated":"2026-09-02 14:59:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/erphome.pl\/docs\/widget-rezerwacji","header_author_uri":"https:\/\/erphome.pl","rating":5,"author_block_rating":0,"active_installs":0,"downloads":101,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"erphome","date":"2026-08-31 08:01:38","revision":3673605},"1.1.0":{"tag":"1.1.0","author":"erphome","date":"2026-09-02 09:22:43","revision":3677605},"1.2.0":{"tag":"1.2.0","author":"erphome","date":"2026-09-02 13:28:52","revision":3678086},"1.3.0":{"tag":"1.3.0","author":"erphome","date":"2026-09-02 14:59:37","revision":3678227}},"upgrade_notice":{"1.3.0":"<p>Elementor users get a proper draggable element instead of having to paste a shortcode.<\/p>","1.2.0":"<p>The widget now fits its own height, multi-apartment accounts get a dropdown instead of typing slugs, and you can publish apartment structured data on your page so search engines finally see what the iframe hides.<\/p>","1.1.0":"<p>The widget now speaks the language of your site, with Polish and English built in, and no longer overflows in narrow columns.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3677605,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3677605,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3677605,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3677605,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"erphome\/widget":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"erphome\/widget","title":"ErpHome \u2014 Booking Widget","category":"widgets","icon":"calendar-alt","description":"Embeds the ErpHome booking widget: an availability calendar and a link to book.","keywords":["booking","reservation","rezerwacja","erphome","apartment","apartament","calendar","kalendarz"],"textdomain":"erphome-pl-widget-rezerwacji-apartamentu","attributes":{"apt":{"type":"string","default":""},"lang":{"type":"string","default":""},"width":{"type":"number","default":0},"height":{"type":"number","default":0}},"supports":{"html":false,"align":["left","center","right"]},"editorScript":"file:.\/index.js","example":{"attributes":{"width":360,"height":420},"viewportWidth":420}}},"tagged_versions":["1.0.0","1.1.0","1.2.0","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3678086,"resolution":"1","location":"assets","locale":"","width":2040,"height":1028},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3678086,"resolution":"2","location":"assets","locale":"","width":2040,"height":2033},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3678086,"resolution":"3","location":"assets","locale":"","width":2040,"height":1350},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3678086,"resolution":"4","location":"assets","locale":"","width":2040,"height":827}},"screenshots":{"1":"The booking widget on a page, sized to its content, checking availability without leaving the site.","2":"Settings \u2192 ErpHome: paste the link from your erphome.pl panel and the rest fills itself in, including the apartment list.","3":"The \"ErpHome \u2014 Booking Widget\" block in the editor, with a live preview and sidebar controls.","4":"The same widget in English and in Polish, set per embed with the lang attribute."}},"plugin_section":[],"plugin_tags":[11767,1274,269,722,6467],"plugin_category":[40],"plugin_contributors":[278440],"plugin_business_model":[],"class_list":["post-361117","plugin","type-plugin","status-publish","hentry","plugin_tags-apartment","plugin_tags-availability-calendar","plugin_tags-booking","plugin_tags-reservation","plugin_tags-vacation-rental","plugin_category-calendar-and-events","plugin_contributors-erphome","plugin_committers-erphome"],"banners":{"banner":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/banner-772x250.png?rev=3677605","banner_2x":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/banner-1544x500.png?rev=3677605","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/icon-128x128.png?rev=3677605","icon_2x":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/icon-256x256.png?rev=3677605","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/screenshot-1.png?rev=3678086","caption":"The booking widget on a page, sized to its content, checking availability without leaving the site."},{"src":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/screenshot-2.png?rev=3678086","caption":"Settings \u2192 ErpHome: paste the link from your erphome.pl panel and the rest fills itself in, including the apartment list."},{"src":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/screenshot-3.png?rev=3678086","caption":"The \"ErpHome \u2014 Booking Widget\" block in the editor, with a live preview and sidebar controls."},{"src":"https:\/\/ps.w.org\/erphome-pl-widget-rezerwacji-apartamentu\/assets\/screenshot-4.png?rev=3678086","caption":"The same widget in English and in Polish, set per embed with the lang attribute."}],"raw_content":"<!--section=description-->\n<p>Guests who found your apartment on Booking.com or Airbnb will happily book\nwith you directly, if you make it as easy as the portal does. That means a\ncalendar they can see, dates they can pick, and a button that starts the\nbooking. Not a phone number and a hope.<\/p>\n\n<p>This plugin puts exactly that on your WordPress site: the same availability\ncalendar and booking button your guests already see on your erphome.pl\nreservation page. Same apartment, same free dates, same prices, no\ncommission taken out of the booking.<\/p>\n\n<h4>You need an erphome.pl account<\/h4>\n\n<p>This plugin is a bridge, not a booking system on its own. It displays a\nwidget from an existing account on <a href=\"https:\/\/erphome.pl\">erphome.pl<\/a>, a\ncommission-free booking platform for apartment and vacation rental owners.\nIf you do not have an account yet, the plugin will show an empty settings\npage and nothing else.<\/p>\n\n<p>What lives in erphome.pl (not in WordPress): apartment details and prices,\nreservations, guest messages, payments, and calendar sync with the portals.<\/p>\n\n<h4>What the plugin adds to WordPress<\/h4>\n\n<ul>\n<li><strong>Shortcode<\/strong> <code>[erphome_widget]<\/code>, which works anywhere shortcodes do:\nposts, pages, text widgets, page builders.<\/li>\n<li><strong>Block<\/strong> \"ErpHome \u2014 Booking Widget\", with a live preview right in the\neditor and sidebar controls for apartment, language and size.<\/li>\n<li><strong>Elementor element<\/strong> \"ErpHome \u2014 Booking Widget\", draggable straight onto\nthe canvas with the same controls, so nobody has to hunt for the Shortcode\nelement and type <code>[erphome_widget]<\/code> into it.<\/li>\n<li><strong>Classic sidebar widget<\/strong> for themes built around the Widgets screen.<\/li>\n<li><strong>Settings page<\/strong> (Settings \u2192 ErpHome) where you paste the link copied\nfrom your erphome.pl panel. The account and apartment slugs are read out\nof it automatically, so nobody has to explain what a \"slug\" is. Accounts\nwith several apartments get a real dropdown, read from the account.<\/li>\n<\/ul>\n\n<h4>Fits the page instead of sitting in a box<\/h4>\n\n<p>The widget reports how tall it actually is, and the plugin sizes the frame to\nmatch. No empty space underneath, and nothing cut off when the widget sits in\na narrow column or on a phone. Turn it off in Settings \u2192 ErpHome if you would\nrather pin a fixed height.<\/p>\n\n<h4>Tells search engines what your page is about<\/h4>\n\n<p>The widget is an iframe, and search engines do not read inside one. So a page\nwith only a widget on it says nothing about your apartment: no photos, no\nrooms, no ratings, nothing for Google or an AI assistant to quote.<\/p>\n\n<p>Switch on \"Add apartment structured data\" and the plugin publishes a\nschema.org <strong>VacationRental<\/strong> block on your page, built from your erphome.pl\nlisting: photos, size, bedrooms and beds, amenities, check-in and check-out\ntimes, guest ratings and reviews, and your FAQ. It describes <em>your<\/em> page and\nlinks back to your erphome.pl listing as the same place, so the two do not\ncompete.<\/p>\n\n<p>It runs only on single posts and pages, and only where the widget is in the\ncontent, never from a sidebar. It is off by default, so it can never surprise\nan SEO plugin that already publishes this data.<\/p>\n\n<h4>Measurable<\/h4>\n\n<p>When a guest picks their dates and hits the booking button, the plugin pushes\nan <code>erphome_booking_start<\/code> event into <code>dataLayer<\/code>, with the dates, number of\nnights and guest count. Pick it up in Google Tag Manager or GA4 and you will\nsee how many visitors actually start a booking, not just how many loaded the\npage.<\/p>\n\n<h4>Speaks your visitors' language<\/h4>\n\n<p>The widget follows the language of your WordPress site, so an English site\ngets an English widget and a Polish site gets a Polish one. Polish and\nEnglish are both built in.<\/p>\n\n<p>Running a bilingual site? Set the language per embed:<\/p>\n\n<pre><code>[erphome_widget lang=\"en\"]\n<\/code><\/pre>\n\n<p>The same control sits in the block sidebar and in the classic widget. The\napartment's own content (title, description) follows whichever languages you\nenabled for it in the erphome.pl panel, so an owner who translated the\nlisting gets translated content here too.<\/p>\n\n<h4>Your calendars stay in one place<\/h4>\n\n<p>If your erphome.pl account syncs availability from Airbnb or Booking.com\nover iCal, the widget shows that same combined, up-to-date availability.\nSync is configured once, in erphome.pl, and nothing about it needs repeating\nin WordPress.<\/p>\n\n<h4>Several apartments?<\/h4>\n\n<p>The <code>apt<\/code> attribute embeds a different apartment than the default one from\nSettings \u2192 ErpHome, so each apartment can have its own page:<\/p>\n\n<pre><code>[erphome_widget apt=\"dom-nad-morzem\"]\n<\/code><\/pre>\n\n<p>Available on the block and the sidebar widget too.<\/p>\n\n<h4>Why a plugin instead of pasting a script<\/h4>\n\n<p>The erphome.pl panel also gives you a <code>&lt;script&gt;<\/code> snippet for any website.\nOn WordPress that snippet has a habit of disappearing: the block editor\nstrips <code>&lt;script&gt;<\/code> from HTML blocks in some setups, caching and minification\nplugins defer external scripts until the widget arrives late or not at all,\nand security plugins block third-party scripts inside post content.<\/p>\n\n<p>This plugin renders a plain <code>&lt;iframe&gt;<\/code> server-side instead. It has a known\nwidth and height before the page paints, so nothing jumps around while\nloading, and there is no external JavaScript for another plugin to break.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Everything below talks to one service: <strong>erphome.pl<\/strong>, specifically your\naccount's subdomain <code>your-name.erphome.pl<\/code>, operated by ERP HOME Sp. z o.o.\nThe plugin contacts nothing else.<\/p>\n\n<p>There are two separate connections, and they are worth telling apart.<\/p>\n\n<p><strong>1. The visitor's browser loads the widget (always).<\/strong>\nThe widget is an <code>&lt;iframe&gt;<\/code> pointing at erphome.pl. On every page where you\nembed it (shortcode, block, or sidebar widget), each visitor's browser\nconnects directly to erphome.pl to fetch the current availability calendar.\nThe address carries your account slug, optionally the apartment slug, and a\ntwo-letter language code taken from your site's language setting (for example\n    ?widget=1&amp;lang=en). The plugin adds no visitor data to it.<\/p>\n\n<p>If you switch on height fitting, the widget and the page also exchange\n    postMessage calls: the widget sends its content height and, when a guest\npresses the booking button, the dates, night count and guest count they chose.\nThat data stays in the visitor's browser. The plugin puts the booking-button\nevent into <code>dataLayer<\/code>, where your own analytics tools (if you use any) can\nread it. Nothing is sent anywhere by the plugin itself.<\/p>\n\n<p><strong>2. Your server asks erphome.pl for your listing (only for two features).<\/strong>\nWhen you use the apartment dropdown, or switch on structured data, your\nWordPress server calls the public erphome.pl API over HTTPS\n(<code>?api=apartments<\/code> and <code>?api=1<\/code>) to read your own listing: title,\ndescription, photos, amenities, ratings and so on. This is a plain GET with\nno authentication, it sends nothing about your visitors, and the answer is\ncached for six hours. The same data is already public on your erphome.pl\nbooking page. Leave both features off and your server never contacts\nerphome.pl at all.<\/p>\n\n<p>erphome.pl's data-processing terms (including the visitor's IP address and\nbrowser data, which any HTTP request sends by default):\n<a href=\"https:\/\/erphome.pl\/en\/polityka-prywatnosci\">Privacy policy<\/a> \u00b7\n<a href=\"https:\/\/erphome.pl\/polityka-prywatnosci\">Polityka prywatno\u015bci<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Settings \u2192 ErpHome.<\/li>\n<li>Paste the \"Widget preview\" link copied from your erphome.pl panel\n(Settings \u2192 Calendars) and save. The account and apartment slug fields\nfill in automatically, and a live preview appears below the form.<\/li>\n<li>Add <code>[erphome_widget]<\/code> to a post or page, or insert the \"ErpHome \u2014\nBooking Widget\" block in the editor.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20erphome.pl%20account%3F\"><h3>Do I need an erphome.pl account?<\/h3><\/dt>\n<dd><p>Yes. The plugin displays the widget from an existing account. It does not\ncreate one, and it does not replace the erphome.pl panel.<\/p><\/dd>\n<dt id=\"is%20the%20widget%20available%20in%20english%3F\"><h3>Is the widget available in English?<\/h3><\/dt>\n<dd><p>Yes. The widget follows your WordPress site language, with Polish and\nEnglish built in, and the <code>lang<\/code> attribute overrides it per embed. The\nerphome.pl panel and the full reservation page are available in English as\nwell.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20my%20airbnb%20or%20booking.com%20calendar%3F\"><h3>Does this work with my Airbnb or Booking.com calendar?<\/h3><\/dt>\n<dd><p>Yes, if your erphome.pl account already syncs availability from those\nplatforms over iCal. The widget always shows the same availability as your\nerphome.pl booking page.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20site%3F\"><h3>Does it slow down my site?<\/h3><\/dt>\n<dd><p>No. The widget loads in a separate <code>&lt;iframe&gt;<\/code> with <code>loading=\"lazy\"<\/code>, so it\ndoes not block the rest of the page from rendering, and it adds no\nJavaScript or CSS to your theme.<\/p><\/dd>\n<dt id=\"where%20does%20the%20booking%20actually%20happen%3F\"><h3>Where does the booking actually happen?<\/h3><\/dt>\n<dd><p>In the widget the guest picks dates and guest count and gets an instant\nanswer on whether the dates are free. The button then opens your full\nerphome.pl reservation page in a new tab, with those choices already filled\nin. The booking form, payments and confirmation stay outside the iframe,\nwhich is what keeps payment gateways and sessions working reliably.<\/p><\/dd>\n<dt id=\"i%20have%20several%20apartments.%20can%20i%20embed%20more%20than%20one%3F\"><h3>I have several apartments. Can I embed more than one?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>apt<\/code> attribute on the shortcode, block or widget to pick a\ndifferent apartment than the plugin default on each page.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20the%20link%20to%20paste%20into%20settings%20%E2%86%92%20erphome%3F\"><h3>Where do I find the link to paste into Settings \u2192 ErpHome?<\/h3><\/dt>\n<dd><p>In the erphome.pl panel: Settings \u2192 Calendars, section \"Widget rezerwacji na\nTwoj\u0105 stron\u0119\". Pasting the whole snippet works as well as pasting just the\nlink.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20size%20of%20the%20widget%3F\"><h3>Can I change the size of the widget?<\/h3><\/dt>\n<dd><p>Width, yes: in Settings \u2192 ErpHome for the default, or per embed with the\n    width attribute. Height is normally handled for you, because the widget\nreports how tall it is. If you switch that off, <code>height<\/code> applies as a fixed\nvalue:\n    [erphome_widget width=\"360\" height=\"450\"]<\/p><\/dd>\n<dt id=\"will%20the%20structured%20data%20clash%20with%20yoast%20or%20rank%20math%3F\"><h3>Will the structured data clash with Yoast or Rank Math?<\/h3><\/dt>\n<dd><p>It should not. The plugin publishes one extra <code>VacationRental<\/code> block; SEO\nplugins publish their own page and site markup and the two describe different\nthings. If your SEO plugin already publishes apartment or lodging data, leave\nthis option off rather than having two sources say the same thing.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20slow%20my%20site%20down%20by%20calling%20erphome.pl%3F\"><h3>Does the plugin slow my site down by calling erphome.pl?<\/h3><\/dt>\n<dd><p>The dropdown and the structured data read your listing from erphome.pl and\ncache it for six hours, so it is roughly four requests a day, from your server,\nnot from your visitors. A failed call is cached briefly too, so a temporary\noutage cannot make every page wait. With both features off, your server never\ncalls erphome.pl.<\/p><\/dd>\n<dt id=\"how%20do%20i%20track%20bookings%20started%20from%20my%20site%3F\"><h3>How do I track bookings started from my site?<\/h3><\/dt>\n<dd><p>Switch on height fitting and the plugin pushes an <code>erphome_booking_start<\/code>\nevent to <code>dataLayer<\/code> when a guest presses the booking button, carrying\n    erphome_apartment, <code>erphome_check_in<\/code>, <code>erphome_check_out<\/code>,\n    erphome_nights and <code>erphome_guests<\/code>. Add a Google Tag Manager trigger on\nthat event name.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Elementor: the widget is now a draggable element with its own controls, instead of a shortcode you have to know about.<\/li>\n<li>The height fitting now also covers widgets added to the page after it loaded (Elementor's editor preview, page builders, popups, lazily loaded content).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>The widget now sizes itself to its content, so there is no empty space below it and nothing gets cut off in narrow columns.<\/li>\n<li>New option: publish schema.org VacationRental structured data for the apartment on your page, built from your erphome.pl listing. Off by default.<\/li>\n<li>Accounts with several apartments get a dropdown in the settings and in the block, instead of typing the apartment slug by hand.<\/li>\n<li>Pressing the booking button now pushes an <code>erphome_booking_start<\/code> event to <code>dataLayer<\/code> for Google Tag Manager and GA4.<\/li>\n<li>The block sidebar is now translatable (JavaScript translations were missing until now, so those labels stayed English whatever the site language).<\/li>\n<li>The block shows a preview in the inserter.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>The widget now follows the language of your WordPress site (Polish and English built in).<\/li>\n<li>New \"Widget language\" setting, plus a <code>lang<\/code> attribute on the shortcode, block and sidebar widget for bilingual sites.<\/li>\n<li>Fixed a layout overflow in the embedded widget at widths below roughly 420 px.<\/li>\n<li>Fixed the settings page showing every notice twice.<\/li>\n<li>Rewritten plugin description, added banner, icon and screenshots.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: shortcode, Gutenberg block, sidebar widget, settings page with automatic link recognition.<\/li>\n<\/ul>","raw_excerpt":"Put your live availability calendar and a commission-free booking button on your own site, as a shortcode, a block or a sidebar widget.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361117"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erphome"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361117"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361117"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361117"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361117"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361117"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}