-
Efficient parent/child page querying in WagtailEfficient parent/child page querying in Wagtail
In Wagtail, pages exist within a hierarchical system, where each page has a single parent and potentially several children. The method of storing the page’s hierarchical ‘location’ in the database is slightly atypical.
17 July 2025 -
Wagtail no scheduled publishing optionWagtail no scheduled publishing option
Wagtail supports scheduling a page’s publication date and time out of the box. The first time I tried to use this feature, I lost a lot of time to an issue where the expected ‘Set schedule’ button wasn’t displaying in the page’s ‘Status’ tab.
3 July 2025 -
Using wagtail-seo hours of operation in templatesUsing wagtail-seo hours of operation in templates
wagtail-seo comes with various SEO settings for your site, including fields for ‘Hours of operation’. I needed to take this data and output it on a template in a nice format. This approach is minimal and effective, so if you are also looking to build a global opening hours widget, …
16 May 2025 -
Changing Wagtail ChoiceBlocks without migrationsChanging Wagtail ChoiceBlocks without migrations
I’ve recently been building some content systems within Wagtail that utilise the ChoiceBlock and MultipleChoiceBlock. The project required these to be modifiable without generating migrations for a few reasons, so I’d like to share my solution for facilitating this.
14 May 2025 -
Dockerise Python with a background CRON runnerDockerise Python with a background CRON runner
Since January, I’ve worked full-time in Django and Wagtail development. In my last post, I shared my Dockerfile for deploying such projects. That Dockerfile includes a multi-stage build to reduce the final image size and to improve security. This directly builds on that Dockerfile.
22 April 2025 -
Writing a Minimal Wagtail, Poetry & Node DockerfileWriting a Minimal Wagtail, Poetry & Node Dockerfile
Over the last few months, I have worked extensively on several Wagtail projects. Off the back of this, I have decided to pivot from focusing on WordPress development in favour of Django and Wagtail.
8 April 2025 -
Dockerise Django and NPM with Multi-Stage BuildsDockerise Django and NPM with Multi-Stage Builds
I’ve recently started learning Django, the popular web development framework for Python. Until now, as a PHP developer, I’ve been rather spoiled with the ease of deploying projects thanks to software such as cPanel or Plesk.
11 November 2024 -
How To Correctly Size WordPress ImagesHow To Correctly Size WordPress Images
This is a bit of a minefield topic, as there are a lot of plugins and ‘solutions’ out there that require you to pay money or install bloated software to accomplish something WordPress is designed to handle.
10 October 2024 -
Testing Laravel & Livewire in Github ActionsTesting Laravel & Livewire in Github Actions
When running a Laravel test suite with Livewire components, the default workflow file provided by GitHub for Laravel likely won’t pass. When using their default config, I was presented with errors such as this:
19 August 2024 -
Remove the ‘Website’ field from the WordPress comment formRemove the ‘Website’ field from the WordPress comment form
How to remove and re-order the default comment form fields used in WordPress. In this post, I demonstrate removing the 'Website' field, and adjust the other form fields accordingly.
15 July 2024 -
YouTube API with Laravel & Guzzle HttpYouTube API with Laravel & Guzzle Http
In my Hermitclock project, I’ve set up an integration with the YouTube API to pull in recent uploads from the content creators who play on the Hermitcraft server. If you’re interested, you can read more about Hermitclock here.
18 June 2024 -
Add a Honeypot to Livewire Volt FormsAdd a Honeypot to Livewire Volt Forms
Livewire allows you to build ‘Powerful, dynamic, front-end UIs without leaving PHP’. For me, as a PHP fanboy, it’s quickly becoming my bread and butter for creating reactive components all within the comfort of my own backyard.
10 June 2024