I’m working on a new WordPress plugin at the moment, one to take advantage of the hCaptcha service. hCaptcha is a drop-in replacement for Google’s reCaptcha, so it keeps bots (and other non-humans) from posting forms on your website. There are a few benefits to using hCaptcha over reCaptcha though… Privacy focused – unlike everything that Google…
Tag: wordpress
Add profile fields using Advanced Custom Fields
I was working on a WordPress site for a client this week and wanted to add a new field to the user profile, but not one that the user could themselves edit. And I thought that this was going to be really complicated. Advanced Custom Fields Pro to the rescue! If I’ve not talked about…
Show current WordPress template
The WordPress template hierarchy is complex to say the least, or at least, not overly memorable… It’s incredibly useful and powerful to be able to create overriding custom templates, giving you full control over what you want to display for different parts of the WordPress site you’re creating. However, it’s easy to get lost, and…
Ultimate Addons flaw
If you are using either the Ultimate Addons for Beaver Builder or Ultimate Addons for Elementor plugins, then you really need to update them as soon as possible. Security researchers at MalCare have discovered a critical authentication bypass vulnerability in both of these populate premium WordPress plugins, and unfortunately they are quite trivial to exploit. The…
WordPress ‘theme directory does not exist’
I’ve been stuck for a few hours trying to figure out why one of the websites I’m currently working on for a client wasn’t working. I was getting the error below whenever I tried to access the theme customiser… The theme directory “dark” does not exist. Now to be fair, this is correct, the theme…
Time To First Byte – part 2
I often do performance optimisation on WordPress sites for clients, and have recently completed such a project. One really critical metric I explored is Time To First Byte (TTFB). But it can be hard to really drill down into it. In my last post I spoke specifically about how to use the Server-Timing response header…