{"id":300665,"date":"2026-04-25T11:56:09","date_gmt":"2026-04-25T11:56:09","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kennel-press\/"},"modified":"2026-06-26T04:58:35","modified_gmt":"2026-06-26T04:58:35","slug":"kennelflow-boarding","status":"publish","type":"plugin","link":"https:\/\/br.wordpress.org\/plugins\/kennelflow-boarding\/","author":12029770,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.2","stable_tag":"0.1.2","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"KennelFlow Boarding Manager","header_author":"LandTech Web Designs","header_description":"Boarding foundation: pets, rooms, locations, and bookings with availability checks and REST API.","assets_banners_color":"93512d","last_updated":"2026-06-26 04:58:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/kennelflow-boarding\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":191,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"brelandr","date":"2026-04-25 11:55:33"},"0.1.2":{"tag":"0.1.2","author":"brelandr","date":"2026-06-26 04:58:35"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3586715,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3586715,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3586715,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3586715,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3586749,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"kennelflow-core\"}},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"kennelflow-boarding\"}},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n$loc_pt = function_exists( 'ltkf_get_location_post_type' ) ? ltkf_get_location_post_type() : 'kf_location';\\nwp_insert_post( array( 'post_title' => 'Main Campus', 'post_type' => $loc_pt, 'post_status' => 'publish' ) );\\n$owner_id = username_exists( 'demoowner' );\\nif ( ! $owner_id ) {\\n\\t$owner_id = wp_insert_user( array(\\n\\t\\t'user_login' => 'demoowner',\\n\\t\\t'user_pass' => 'password',\\n\\t\\t'user_email' => 'owner@kennelflow.demo',\\n\\t\\t'role' => 'subscriber',\\n\\t\\t'display_name' => 'Demo Owner',\\n\\t) );\\n}\\n$pet_pt = function_exists( 'ltkf_get_pet_post_type' ) ? ltkf_get_pet_post_type() : 'kf_pet';\\n$owner_key = function_exists( 'ltkf_get_pet_owner_user_meta_key' ) ? ltkf_get_pet_owner_user_meta_key() : 'kf_owner_user_id';\\nforeach ( array( 'Bailey (Golden Retriever)', 'Max (Labrador)' ) as $title ) {\\n\\t$pid = wp_insert_post( array( 'post_title' => $title, 'post_type' => $pet_pt, 'post_status' => 'publish' ) );\\n\\tif ( $pid && ! is_wp_error( $pid ) ) {\\n\\t\\tupdate_post_meta( $pid, $owner_key, (int) $owner_id );\\n\\t}\\n}\\nif ( class_exists( '\\\\Landtech\\\\KennelFlow\\\\Core\\\\OwnerPets' ) && $owner_id ) {\\n\\t\\\\Landtech\\\\KennelFlow\\\\Core\\\\OwnerPets::rebuild_user_pet_ids( (int) $owner_id );\\n}\\n$portal = wp_insert_post( array(\\n\\t'post_title' => 'Pet Owner Portal',\\n\\t'post_content' => \\\"<h1>My Pets<\\\/h1>\\\\n\\\\n[ltkf_dashboard]\\\\n\\\\n<p><em>Demo owner: demoowner \\\/ password<\\\/em><\\\/p>\\\",\\n\\t'post_status' => 'publish',\\n\\t'post_type' => 'page',\\n) );\\nif ( $portal && ! is_wp_error( $portal ) && ! (int) get_option( 'page_on_front' ) ) {\\n\\tupdate_option( 'show_on_front', 'page' );\\n\\tupdate_option( 'page_on_front', (int) $portal );\\n}\"},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\nif ( shortcode_exists( 'ltkf_booking' ) ) {\\n\\twp_insert_post( array(\\n\\t\\t'post_title' => 'Book Boarding',\\n\\t\\t'post_content' => '[ltkf_booking]',\\n\\t\\t'post_status' => 'publish',\\n\\t\\t'post_type' => 'page',\\n\\t) );\\n}\"}]}"}},"all_blocks":[],"tagged_versions":["0.1.0","0.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3586715,"resolution":"1","location":"assets","locale":"","width":3264,"height":3398},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3586715,"resolution":"2","location":"assets","locale":"","width":3264,"height":1850},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3586715,"resolution":"3","location":"assets","locale":"","width":3264,"height":4814},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3586715,"resolution":"4","location":"assets","locale":"","width":3264,"height":28800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3586715,"resolution":"5","location":"assets","locale":"","width":3264,"height":28800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3586715,"resolution":"6","location":"assets","locale":"","width":3264,"height":28800},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3586715,"resolution":"7","location":"assets","locale":"","width":3264,"height":6850},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3586715,"resolution":"8","location":"assets","locale":"","width":1212,"height":1576},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3586715,"resolution":"9","location":"assets","locale":"","width":1212,"height":1658}},"screenshots":{"1":"Kennel bookings list with pet, kennel, dates, and status columns.","2":"Booking editor with pet, location, kennel, schedule, status, and boarding quote snapshot.","3":"Kennel booking calendar loaded from the REST API for a selected date range.","4":"WooCommerce boarding product setup (optional; pairs with KennelFlow Core revenue tools).","5":"WooCommerce boarding product pricing tiers for multi-night stays.","6":"WooCommerce boarding product variations for pet size and stay length.","7":"Kennel rules \u2014 hours, boarding windows, holidays, and per-location pricing settings.","8":"Mobile Report Card \u2014 today\u2019s checked-in boarding roster on a phone-friendly staff screen.","9":"Mobile Report Card \u2014 daily photo and checklist form emailed to the pet owner."}},"plugin_section":[],"plugin_tags":[261050,269,268930,2690],"plugin_category":[40],"plugin_contributors":[251791],"plugin_business_model":[],"class_list":["post-300665","plugin","type-plugin","status-publish","hentry","plugin_tags-boarding","plugin_tags-booking","plugin_tags-kennels","plugin_tags-pets","plugin_category-calendar-and-events","plugin_contributors-brelandr","plugin_committers-brelandr"],"banners":{"banner":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/banner-772x250.png?rev=3586715","banner_2x":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/banner-1544x500.png?rev=3586715","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/icon-128x128.png?rev=3586715","icon_2x":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/icon-256x256.png?rev=3586715","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-1.png?rev=3586715","caption":"Kennel bookings list with pet, kennel, dates, and status columns."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-2.png?rev=3586715","caption":"Booking editor with pet, location, kennel, schedule, status, and boarding quote snapshot."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-3.png?rev=3586715","caption":"Kennel booking calendar loaded from the REST API for a selected date range."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-4.png?rev=3586715","caption":"WooCommerce boarding product setup (optional; pairs with KennelFlow Core revenue tools)."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-5.png?rev=3586715","caption":"WooCommerce boarding product pricing tiers for multi-night stays."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-6.png?rev=3586715","caption":"WooCommerce boarding product variations for pet size and stay length."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-7.png?rev=3586715","caption":"Kennel rules \u2014 hours, boarding windows, holidays, and per-location pricing settings."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-8.png?rev=3586715","caption":"Mobile Report Card \u2014 today\u2019s checked-in boarding roster on a phone-friendly staff screen."},{"src":"https:\/\/ps.w.org\/kennelflow-boarding\/assets\/screenshot-9.png?rev=3586715","caption":"Mobile Report Card \u2014 daily photo and checklist form emailed to the pet owner."}],"raw_content":"<!--section=description-->\n<p>KennelFlow Boarding (KennelPress) is the boarding companion for <strong>KennelFlow Core<\/strong>. It registers kennels and bookings, checks availability, exposes REST endpoints for custom booking flows, and adds front-desk tools for daily operations.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li><strong>KennelPress Front Desk<\/strong> \u2014 top-level menu with links to bookings and the kennel calendar.<\/li>\n<li><strong>Kennel bookings<\/strong> \u2014 create and manage boarding reservations (pet, kennel, location, dates, status).<\/li>\n<li><strong>Kennels<\/strong> \u2014 define runs and rooms with location, resource type, and capacity.<\/li>\n<li><strong>Kennel calendar<\/strong> \u2014 REST-fed calendar view for a selected UTC date range.<\/li>\n<li><strong>Kennel rules<\/strong> \u2014 per-location hours, holiday closures, blackout windows, and boarding windows (React UI under KennelFlow).<\/li>\n<li><strong>Mobile Report Card<\/strong> \u2014 staff PWA to send daily photo + checklist emails to pet owners for checked-in boarding stays.<\/li>\n<li><strong>REST API<\/strong> \u2014 availability, locations, kennels, bookings, facility settings, and report cards under <code>kennelflow-boarding\/v1<\/code> (legacy <code>kennelpress\/v1<\/code> routes remain registered for compatibility).<\/li>\n<\/ul>\n\n<p>Pets and physical locations use <strong>KennelFlow Core<\/strong> (<code>kf_pet<\/code>, <code>kf_location<\/code>). WooCommerce is optional; use <strong>KennelFlow Boarding Pro<\/strong> for checkout and payment links.<\/p>\n\n<h3>Try It Live - Preview This Plugin Instantly<\/h3>\n\n<p>Preview KennelFlow Boarding in WordPress Playground: the blueprint installs <strong>KennelFlow Core<\/strong> and <strong>KennelFlow Boarding<\/strong> from WordPress.org, seeds demo pets and the owner portal, adds a <strong>Book Boarding<\/strong> page with <code>[ltkf_booking]<\/code>, and opens <strong>KennelPress Front Desk<\/strong> in wp-admin. Log in as <strong>admin<\/strong> \/ <strong>password<\/strong> (demo owner: <strong>demoowner<\/strong> \/ <strong>password<\/strong>).<\/p>\n\n<p><a href=\"https:\/\/playground.wordpress.net\/?blueprint-url=https:\/\/raw.githubusercontent.com\/brelandr\/kennelflow-boarding\/main\/blueprint.json\">Preview on WordPress Playground<\/a><\/p>\n\n<p>The blueprint ships as <code>blueprint.json<\/code> and <code>assets\/blueprints\/blueprint.json<\/code>. WordPress.org also serves a copy from plugin SVN for directory live preview.<\/p>\n\n<h3>Mobile report card (staff PWA)<\/h3>\n\n<p>Authorized staff can send a daily photo + checklist email to the pet owner for boarding stays:<\/p>\n\n<ul>\n<li><strong>Who can use it:<\/strong> WordPress users with <code>edit_posts<\/code> or <code>kennelpress_send_reports<\/code>.<\/li>\n<li><strong>Staff URL (no wp-admin chrome):<\/strong> <code>https:\/\/yoursite.com\/kennelflow-mobile<\/code> \u2014 requires pretty permalinks (not \u201cPlain\u201d). After install, open <strong>Settings \u2192 Permalinks<\/strong> and click <strong>Save<\/strong> once if the URL 404s.<\/li>\n<li><strong>Fallback URL:<\/strong> <code>https:\/\/yoursite.com\/?kf_pwa=1<\/code><\/li>\n<li><strong>WordPress admin:<\/strong> <strong>KennelPress \u2192 Mobile Report Card<\/strong> (same app, full-width, admin menu hidden).<\/li>\n<li><strong>What it does:<\/strong> Lists <strong>boarding<\/strong> bookings with status <strong>checked in<\/strong> for <strong>today<\/strong> (site timezone). Take a photo, set mood, breakfast, bathroom, notes, then <strong>Send Report Card<\/strong>. The image is saved to the Media Library and the owner receives an HTML email (pet owner must be linked via KennelFlow Core).<\/li>\n<li><strong>REST:<\/strong> <code>POST \/wp-json\/kennelflow-boarding\/v1\/report-cards<\/code> (multipart: <code>booking_id<\/code>, <code>photo<\/code>, <code>mood<\/code>, <code>ate_food<\/code>, <code>bathroom<\/code>, <code>notes<\/code>).<\/li>\n<\/ul>\n\n<h3>KennelFlow Boarding Pro<\/h3>\n\n<p>Premium add-on for WooCommerce checkout and booking payment links:<\/p>\n\n<p>https:\/\/landtechwebdesigns.com\/<\/p>\n\n<h3>User guide<\/h3>\n\n<p>Step-by-step setup for the KennelFlow stack (Hub calendar, kennels, REST, booking flows) is in <strong>docs\/PLATFORM_GUIDE.md<\/strong> at the KennelFlow repository root.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>KennelFlow Core<\/strong> (required).<\/li>\n<li>Install KennelFlow Boarding through the WordPress.org plugin directory or upload the zip under <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate KennelFlow Boarding.<\/li>\n<li>Add kennels under <strong>KennelFlow \u2192 Kennels<\/strong> and manage bookings under <strong>KennelPress \u2192 Kennel bookings<\/strong>.<\/li>\n<\/ol>\n\n<h4>Build assets (developers)<\/h4>\n\n<p>From the plugin directory: <code>npm install<\/code> then <code>npm run build<\/code> (facility settings + Mobile Report Card PWA). Requires <code>build\/pwa-report-card.js<\/code> and <code>assets\/dist\/facility-settings.js<\/code> for those screens to work.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20woocommerce%3F\"><h3>Does this require WooCommerce?<\/h3><\/dt>\n<dd><p>No. The free plugin does not require WooCommerce. WooCommerce is optional and used with <strong>KennelFlow Boarding Pro<\/strong>.<\/p><\/dd>\n<dt id=\"does%20boarding%20work%20without%20kennelflow%20core%3F\"><h3>Does Boarding work without KennelFlow Core?<\/h3><\/dt>\n<dd><p>No. Activate KennelFlow Core first. WordPress lists Core as a required plugin when supported by your site.<\/p><\/dd>\n<dt id=\"where%20is%20the%20mobile%20report%20card%3F\"><h3>Where is the Mobile Report Card?<\/h3><\/dt>\n<dd><p>Use <strong>KennelPress \u2192 Mobile Report Card<\/strong> in wp-admin, or open <code>https:\/\/yoursite.com\/kennelflow-mobile<\/code> while logged in as staff.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Full boarding stack: Front Desk menu, kennels and bookings CPTs, kennel calendar, and kennel rules (facility settings).<\/li>\n<li>REST API under <code>kennelflow-boarding\/v1<\/code> with legacy <code>kennelpress\/v1<\/code> compatibility.<\/li>\n<li>Hub calendar bridge and boarding calendar resources for KennelFlow Core integration.<\/li>\n<li>Mobile Report Card PWA: public <code>\/kennelflow-mobile<\/code>, admin screen, report-cards REST, and rewrite auto-flush.<\/li>\n<li>Booking transaction, availability, and admin booking editor improvements.<\/li>\n<li>WordPress.org listing assets: banners, icons, and screenshots.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Internal release alignment and REST hardening.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial WordPress.org release.<\/li>\n<li>Readme: <strong>Tested up to: 7.0<\/strong> (WordPress 7.0 release alignment).<\/li>\n<\/ul>","raw_excerpt":"Boarding for KennelFlow: kennels, bookings, availability REST API, kennel rules, and a Mobile Report Card for staff. Requires KennelFlow Core.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/300665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=300665"}],"author":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brelandr"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=300665"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=300665"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=300665"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=300665"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=300665"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=300665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}