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.

Page 5/9123456789