{"id":295796,"date":"2026-04-11T18:54:30","date_gmt":"2026-04-11T18:54:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/broker-for-boat\/"},"modified":"2026-04-11T18:53:56","modified_gmt":"2026-04-11T18:53:56","slug":"broker-for-boat","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/broker-for-boat\/","author":18448816,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3.0","stable_tag":"1.3.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Broker for Boat","header_author":"Additiu","header_description":"Integraci\u00f3n con la plataforma Broker for Boat para mostrar barcos en WordPress","assets_banners_color":"9fb8ca","last_updated":"2026-04-11 18:53:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/brokerforboat.com","header_author_uri":"https:\/\/additiu.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":116,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.0":{"tag":"1.3.0","author":"guillemginer","date":"2026-04-11 18:53:56"}},"upgrade_notice":{"1.2.1":"<p>PDF generation now uses the browser&#039;s native print-to-PDF. No additional PHP libraries required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3504118,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3504118,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3504118,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3504118,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3504120,"resolution":"1","location":"assets","locale":"","width":2908,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3504120,"resolution":"2","location":"assets","locale":"","width":2628,"height":1584},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3504120,"resolution":"3","location":"assets","locale":"","width":2914,"height":1600}},"screenshots":{"1":"Plugin settings page \u2014 API token, slugs, sync interval and PDF branding.","2":"Boat listings in the WordPress admin.","3":"Single boat page on the frontend."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[13696,5062,6601,4528,1558],"plugin_category":[45],"plugin_contributors":[259994],"plugin_business_model":[],"class_list":["post-295796","plugin","type-plugin","status-publish","hentry","plugin_tags-boats","plugin_tags-broker","plugin_tags-inventory","plugin_tags-listings","plugin_tags-sync","plugin_category-ecommerce","plugin_contributors-guillemginer","plugin_committers-guillemginer"],"banners":{"banner":"https:\/\/ps.w.org\/broker-for-boat\/assets\/banner-772x250.png?rev=3504118","banner_2x":"https:\/\/ps.w.org\/broker-for-boat\/assets\/banner-1544x500.png?rev=3504118","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/broker-for-boat\/assets\/icon-128x128.png?rev=3504118","icon_2x":"https:\/\/ps.w.org\/broker-for-boat\/assets\/icon-256x256.png?rev=3504118","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/broker-for-boat\/assets\/screenshot-1.png?rev=3504120","caption":"Plugin settings page \u2014 API token, slugs, sync interval and PDF branding."},{"src":"https:\/\/ps.w.org\/broker-for-boat\/assets\/screenshot-2.png?rev=3504120","caption":"Boat listings in the WordPress admin."},{"src":"https:\/\/ps.w.org\/broker-for-boat\/assets\/screenshot-3.png?rev=3504120","caption":"Single boat page on the frontend."}],"raw_content":"<!--section=description-->\n<p>Broker for Boat connects your WordPress site to the Broker for Boat SaaS platform, automatically publishing your boat inventory as a custom post type.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Automatic boat synchronization from the Broker for Boat API (title, description, price, specs, images).<\/li>\n<li>Featured image and gallery import \u2014 images are stored in the WordPress media library.<\/li>\n<li>Polylang support \u2014 creates and updates translations when the SaaS provides them.<\/li>\n<li>Inventory cleanup endpoint \u2014 removes boats from WordPress that no longer exist in the SaaS.<\/li>\n<li>Printable PDF sheet \u2014 each boat has a print-friendly page that users can save as PDF from the browser.<\/li>\n<li>Configurable slugs for the archive and single boat pages.<\/li>\n<li>Admin panel with sync status, debug log, and PDF branding options (logo, footer, contact info).<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>An active Broker for Boat account.<\/li>\n<li>An API token configured in the plugin settings.<\/li>\n<li>(Optional) Polylang for multilingual sites.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the <strong>Broker for Boat<\/strong> SaaS platform hosted at <code>https:\/\/app.brokerforboat.com<\/code>.<\/p>\n\n<p><strong>What data is sent:<\/strong><\/p>\n\n<ul>\n<li>Your API token (sent in the <code>Authorization<\/code> header) to authenticate sync requests.<\/li>\n<li>Boat listing data (title, description, price, images, specs) is received from the platform and stored locally in WordPress.<\/li>\n<li>Contact inquiry form submissions (name, email, phone, message, boat URL) are forwarded to the platform as leads.<\/li>\n<\/ul>\n\n<p><strong>When the connection is made:<\/strong><\/p>\n\n<ul>\n<li>On every periodic sync (configurable: hourly by default) triggered by WordPress Cron.<\/li>\n<li>When the Broker for Boat SaaS platform pushes individual boat updates via the REST API endpoint.<\/li>\n<li>When a visitor submits the contact inquiry form on a single boat page.<\/li>\n<\/ul>\n\n<p><strong>Service provider:<\/strong> Additiu Marketing Digital SL \u2014 <a href=\"https:\/\/brokerforboat.com\">https:\/\/brokerforboat.com<\/a><\/p>\n\n<p><strong>Terms of Service:<\/strong> <a href=\"https:\/\/brokerforboat.com\/terms\">https:\/\/brokerforboat.com\/terms<\/a><\/p>\n\n<p><strong>Privacy Policy:<\/strong> <a href=\"https:\/\/brokerforboat.com\/privacy\">https:\/\/brokerforboat.com\/privacy<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from the WordPress plugin directory or upload the ZIP file.<\/li>\n<li>Activate the plugin from <strong>Plugins &gt; Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Broker for Boat &gt; Settings<\/strong> and enter your API token.<\/li>\n<li>Optionally configure the archive and single page slugs.<\/li>\n<li>Trigger a sync from your Broker for Boat SaaS dashboard or from the plugin admin panel.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20broker%20for%20boat%20account%3F\"><h3>Do I need a Broker for Boat account?<\/h3><\/dt>\n<dd><p>Yes. The plugin connects to the Broker for Boat API. You need an active account and API token from brokerforboat.com.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multilingual%20sites%3F\"><h3>Does it support multilingual sites?<\/h3><\/dt>\n<dd><p>Yes, via Polylang. When the SaaS provides translations, the plugin creates or updates the corresponding WordPress posts per language.<\/p><\/dd>\n<dt id=\"how%20does%20inventory%20cleanup%20work%3F\"><h3>How does inventory cleanup work?<\/h3><\/dt>\n<dd><p>The SaaS calls the plugin's cleanup REST endpoint with the list of active boat IDs. The plugin removes any WordPress posts not in that list.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20appearance%20of%20boat%20listings%3F\"><h3>Can I customize the appearance of boat listings?<\/h3><\/dt>\n<dd><p>The plugin includes default templates for archive and single boat pages. You can override them in your theme by copying the template files to your theme folder.<\/p><\/dd>\n<dt id=\"can%20i%20add%20my%20own%20branding%20to%20the%20pdf%20sheet%3F\"><h3>Can I add my own branding to the PDF sheet?<\/h3><\/dt>\n<dd><p>Yes. In the plugin settings you can set a custom logo, footer text, and contact details (phone, email, website, address) that appear on every PDF.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>WordPress.org compliance: replaced Font Awesome CDN with local SVG icons (no external dependencies).<\/li>\n<li>WordPress.org compliance: moved inline admin CSS\/JS (edit blocker) to enqueued files.<\/li>\n<li>WordPress.org compliance: sanitized all $_GET inputs in archive template using sanitize_text_field() and absint().<\/li>\n<li>WordPress.org compliance: replaced dynamic variable in __() calls with static string literals.<\/li>\n<li>WordPress.org compliance: moved admin menu to position 80 (Settings area).<\/li>\n<li>WordPress.org compliance: removed \"Powered by\" external link from public archive page.<\/li>\n<li>WordPress.org compliance: removed unnecessary load_plugin_textdomain() calls (auto-loaded since WP 4.6).<\/li>\n<li>Fixed Plugin URI in plugin header.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Fixed WPML compatibility: \/boats\/ archive now works automatically on install with no manual steps. Uses option_icl_sitepress_settings filter to inject the boat CPT into WPML's settings at the exact moment WPML reads them, before any caching occurs.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fixed WPML compatibility: archive URL \/boats\/ now works automatically after install without any manual configuration. The rewrite flush is now deferred to the next request so WPML has time to load the updated CPT settings from the database.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Replaced server-side PDF generation (dompdf) with a browser print-to-PDF approach \u2014 no PHP dependencies required.<\/li>\n<li>Improved PDF layout: fixed-height images, 4-column specs table, neutral branding.<\/li>\n<li>Fixed JavaScript intercepting the download button and forcing blob download.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added printable PDF sheet per boat accessible via \/boat-pdf\/{id}\/.<\/li>\n<li>Added PDF branding options in settings: logo, footer HTML, phone, email, address, website.<\/li>\n<li>Improved edit blocker for SaaS-managed boats in the admin.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed canonical redirect blocking boat archive and single pages.<\/li>\n<li>Fixed rewrite rules flushing on plugin update.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added Polylang multilingual support with language fallback for boat listings.<\/li>\n<li>Added REST API status endpoint.<\/li>\n<li>Improved image sync \u2014 images are now stored in the WordPress media library.<\/li>\n<li>Added configurable sync interval.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release: boat sync, image import, Polylang compatibility, and inventory cleanup endpoint.<\/li>\n<\/ul>","raw_excerpt":"Sync your boat inventory from the Broker for Boat SaaS platform to WordPress. Display listings with images, specs, and multilingual support.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/295796","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=295796"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/guillemginer"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=295796"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=295796"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=295796"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=295796"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=295796"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=295796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}