Monday, May 16, 2022
How to add a top bar countdown for your next product sale
You can (probably) see this top bar right now, with a nice 30% off sale for my WordPress Lighthouse plugin.…
Friday, November 5, 2021
How to scrape content from Meetup.com using PHP
One of my recent projects involved creating WordPress posts from Meetup.com events. As the API is in beta state and…
Monday, November 1, 2021
WordPress: How to display nearby attractions and amenities using Yelp Nearby
This tutorial will show you how to display nearby attractions and amenities based on geographical coordinates (latitude and longitude) using…
Tuesday, October 29, 2024
How to Create a Draggable Carousel using Vanilla JavaScript
A few months ago, I added a new, fancy JavaScript carousel to my homepage. It looked and behaved great, but…
Tuesday, April 11, 2023
How to create a Jetpack Site Stats Aggregator
I believe that Jetpack Site Stats doesn’t need an introduction any more. It provides basic but good insights on your…
Monday, May 12, 2025
Lighthouse Update and What’s Next
It’s been a while since the latest Lighthouse update, and this time we had to release another version due to…
Wednesday, May 29, 2024
Canvas JS: Big Ball of Particles
For a while now, I had this animated, constantly exploding ball of particles on one of my landing pages. Built…
Tuesday, December 14, 2021
How to Add a Block Pattern to a WordPress Theme
Here is a hands-on code snippet on how to add a block pattern (or more) to a WordPress theme. The…
Thursday, May 1, 2025
Using Resource Hints to Optimize WordPress Performance
Resource hints provide a way to optimize the performance of your web page on the client side. As the name…
Thursday, May 20, 2021
CSS Rounded Corners Gradient Border
I had a visually heavy project recently and I had to create a gradient border for certain elements. In my…
Friday, May 20, 2022
JavaScript Drag & Drop
Here’s a nice list of plain JavaScript dragging and dropping solutions. They are minimal, as they serve as proof of…
Thursday, September 21, 2023
“Times New Roman” Enhanced CSS Font Stack
“Times New Roman” as a Classic Web Font Option With Historical Ligatures A ligature is a special character that combines…
Friday, May 20, 2022
How to Create Double Off-canvas Menus With CSS Only
This feature has been part of a website project for many year. The left side off-canvas menu was mobile only,…
Monday, May 16, 2022
JavaScript Character Counter for Text Areas
A while ago, I had to implement a character counter for a business listing directory. The description field was supposed…
Tuesday, August 22, 2023
The Ultimate YouTube Video Embed Setup
Here is a loopable, no-controls, perfect-aspect-ratio YouTube video plus the styles for a perfect, full-width video embed.
Friday, May 14, 2021
WordPress External Featured Image via cURL
Here’s the long title for this code snippet โ How to set up an external image as a WordPress featured…
Wednesday, October 8, 2025
Start an Ecommerce Store in 2021 Guide
If you have ever considered opening an e-commerce store, now is a great time to take action. In 2020, shoppers…
Wednesday, January 14, 2026
Carbon: Basic Syntax Highlighting with Zero Overhead Using JavaScript
If you have ever used PrismJS or CodeMirror or any other syntax highlighter solution, you’ll know it adds lots of…
Wednesday, September 24, 2025
Gravity Forms Repeater Plugin
If there is one feature missing from Gravity Forms, that is a field repeater section. A way to set a…
Thursday, May 1, 2025
SpeedFactor Update: Less is More
The past few weeks have brought some long awaited updates to SpeedFactor. As I am focusing on tracking speed, some…
Thursday, August 14, 2025
How to Create a Fixed Teaser Block in WordPress
This tutorial will show you how to create a collapsible fixed pop-up. It can contain subscriptions forms, contact forms, calls…
Wednesday, May 8, 2024
How I Created My Homepage JavaScript Post Carousel
My homepage now features a JavaScript section of 4 featured posts. Notice the official JavaScript yellow colour? Here’s how I…
Thursday, January 30, 2025
How to Expire localStorage Items and Replace Cookies
I don’t use ๐ช cookies any more, I think they are tooโฆ rigid. I use localStorage items. By default, they…
Tuesday, December 14, 2021
How to Create Smaller Buttons for the Block Editor (Gutenberg)
One of the shortcomings of the WordPress default button blocks is the size variation. There is none. Sometimes the buttons…
Monday, June 26, 2023
WordPress or Amazon? The Hard Choice for Beginner Sellers
When you are starting your own eCommerce business, there are many choices to make, and each one can determine your…
Monday, April 19, 2021
How to Improve Your Mobile Core Web Vitals: Quick Tip
Do you really need those fancy fonts on mobile devices? No? There’s your answer! This applies to any WordPress theme,…
Monday, April 19, 2021
On/Off Toggle Replacement for WordPress Checkboxes
When it comes to WordPress settings and admin panels, I’ve always been a fan of minimalism and default/native styling. I…
Monday, October 20, 2025
My WordPress Plugins โ A Short History
Over the course of my 20 years as a PHP developer, I have developed many WordPress plugins. I don’t have…
Monday, May 16, 2022
tail.select takeover and update
I have been using the tail.select library on 200+ WordPress websites for more than 2 years. That number is growing,…
Monday, September 22, 2025
tail.select
HTML Select Fields as beautiful as never before tail.select is back: Create beautiful, functional and extensive (Multi) Select Fields with…
Monday, June 24, 2024
How I added a neat effect in 30 lines using IntersectionObserver
This is something I’ve always wanted to add to my theme, but I was afraid of the impact on the…
Monday, October 25, 2021
How to add a date/time picker to Gravity Forms
Here’s a nice challenge I got the other day regarding a better date/time picker for Gravity Forms. When I say…
Tuesday, February 9, 2021
How to Create Your Own Image Optimization Plugin by Leveraging Jetpack’s Photon
This is a quick code tutorial detailing how to leverage Jetpack’s Photon for custom images. Not all images in your…
Monday, September 22, 2025
How to Create Your Own Website Screenshot Service by Leveraging WordPress’ mShots API Service
This is an example-based tutorial where you will learn how to create a custom post type called Site, add a…
Tuesday, December 5, 2023
How to Get and Set Query Parameters From URL
Here are two ways to get (and set) query parameters from URL. I’ll add some real life examples in order…
Monday, September 22, 2025
17 Best Website Speed And Performance Testing Tools
50% of people expect a site to load in less than 2 seconds! Your site’s load time could be the…
Wednesday, February 3, 2021
YouTube Playlist Player, Core Web Vitals & Website Performance
My YouTube Playlist Player plugin got an update today and it speeds things up considerably. 1. First of all, I…
Monday, May 12, 2025
Instant Loading in WordPress Lighthouse Plugin
If you’ve read my thoughts on instant page loading in WordPress, and are wondering which solution to go with, note…
Wednesday, November 29, 2023
Thoughts on Instant Loading in WordPress
If you are familiar with the instant loading concept, you’ll know it’s about faster subsequent page loads by prefetching hovered…
Monday, September 22, 2025
How to Submit a Patch to WordPress Core Using TortoiseSVN and Windows 10 (for beginners)
Here’s my steps to submit a patch to WordPress code. The whole process of editing WordPress core and submitting a…
Tuesday, August 2, 2022
How to Create a Price Range Slider Using Vanilla JavaScript
All JavaScript range sliders are hacks or workarounds. Because there’s no native HTML element for a range slider (only a…
Monday, May 16, 2022
How to Create a JavaScript Typewriter Using Vanilla JavaScript
This was done for a client, and I do not recommend it as it uses setTimeout(). Anything using setTimeout() or…
Monday, May 16, 2022
JSONify Dropdown Element Using Vanilla JavaScript
This function converts a regular <select> element both into an intented ul/li structure and JSON. It’s light and it’s been…
Friday, November 13, 2020
How to Detect Multiple Matterport URLs and Embed Them Automatically
Embedding a Matterport tour in a WordPress page proves to be a bit problematic using the regular link-to-oEmbed method. There’s…
Monday, September 22, 2025
The Ultimate Post-Launch Checklist for Your New WordPress Website
This article is a follow-up of our previous pre-launch checklist article. You will learn how to make your new WordPress…
Monday, September 22, 2025
The Ultimate Pre-Launch Pre-Flight Checklist for Your New WordPress Website
This article is split into 2 parts, and we’ll assume you’re launching anything but a blog. You will learn how…
Tuesday, June 18, 2024
Drift Chat: Speed Up Your Page Loading Speed by 3-4 Seconds
Here’s a neat trick to speed up your initial page loading time when you are using Drift. If you use…
Wednesday, January 18, 2023
24-Hour Countdown with Progress Saving Using Vanilla JavaScript
Hereโs an interesting JavaScript snippet allowing you to set a 24-hour countdown and save its progress between page loads.