Site showcase - hundeurlaub
Hundeurlaub is vacation rental site for dog owners. This German language site is one of the more complicated sites we’ve undertaken.
Heavy use of Toolset
- 14 Custom post types
- 20 Custom taxonomies
- 70 Custom field groups
- 600+ custom fields
- 103 Views
- 120 Content templates
- 44 Toolset forms in total
Toolset forms - multi-page forms
We provide property owners the ability to modify all aspects of their properties, this includes multiple accommodation units, bathing areas for pets, occupancy calendars, tariff tables.
To create a property, we developed a 23 page form using 24 Toolset forms and logic to control validation, form completion etc
Additional technology
- Vue.js - for complex ajax components, such as calendars.
- Cortex routing
- composer
- Timber/Twig for templating
Features
- Live bookings from the site.
- Integration with external calendars from AirBnb, vbro etc
- Customer testimonials - negative reviews go through a moderation process.
- Customizable landing pages - we automatically create landing pages for all location/holiday combinations, these are archive views by default, by use of a custom post type, the site owner can convert any high traffic pages to contain custom content.
- Ad insertion - we inject site owner adverts within list views.
- Site wide special offers - owners subscribed to an offer will have their ads highlighted during the offer period.
- Automatic best prices calculation.
- Automatic advert expiry
- Custom sort order applied to ads daily.
Vue.js
We are big fans of Vue.js - on the hunde-urlaub site, we use Vue.js to create and display booking calendars - this provide integration with with iCal calendars from AirBnb and other 3rd party reservation portals.
Theme/build tools
We started the project using the sage starter theme. We still use the Bootstrap Framework, we include just the components and SCSS we need within our build process, but again we have modified this substantially overtime.
Optimisations
After a few years up and running, we have converted some key Views to php and twig templates. This is actually a fairly simple change, and has allowed us to lever transient caching, and bring our response time on key pages to sub-second.
We have a lot of custom javascript on the site in addition to Vue.js, we have converted this to ECMA6 and split the scripts into page specific bundles.
Batch processing
We added our own cron based task manager to the site.
Each day we calculate the cheapest price for each property - this would be an expensive query to run on the fly, and a trivial one to run as a batch task. We also create a psuedo-landing page for each combination of location and holiday activities, this creates around 750,000 cache entries - the site admin can covert any of these entries into a specific activity page using a custom post type.
Hosting
We host most of our sites with Kinsta as a managed WordPress hosting, it’s a great environment for development, is well managed with excellent support, but there are a few gotchas for large throughput sites. The site gets around 250,000 visits per month.