How to Defeat Ad Blockers by Substituting Affiliate Links

F35 Fighter Jet

While everyone hates sites bristling with ads and popups, ad blockers are causing legitimate web content creators to suffer more and more lost income each day. Many of the traditional tactics to defeat adblockers, including putting up a paywall, hiding the site content until blockers are turned off, or just begging people to turn off … Read more

How to Use PHP to Interface with Zoho Analytics API / OAuth 2.0

Zoho API console screenshot

A PHP web app that I created using the Zoho Analytics (formerly Zoho Reports) API suddenly stopped working one day. Digging into the Zoho documentation, I discovered that they ended support for their “authtoken” authentication method (basically a password) and switched to OAuth 2.0. Hmmm… After looking into it, upgrading my app to be compatible … Read more

Generate PDFs Using Free Open-Source PHP Libraries

PHP to PDF generators

I recently had to figure out how to generate PDFs using PHP. There are tons of solutions out there, free and paid, with pros and cons. This is a summary of what I found out during my research, however, it’s by no means comprehensive. I basically stopped when I found solutions that satisfied my requirements. … Read more

Use Gmail or Microsoft 365 to Reliably Send Email from Your WordPress Site

Laptop and mobile phone

2025 UPDATE I no longer recommend using a Google or Microsoft email account for sending transactional email from a website. The main reason is that I’ve seen these accounts get disconnected for various reasons (i.e., the client changed the password) or sometimes for no apparent reason at all, resulting in no email from the site … Read more

Globally Disable Commenting in WordPress Without a Plugin

Microphone

Surprisingly, I wasn’t able to find a native solution online to globally disable commenting on a WordPress website. WordPress doesn’t have a checkbox called “Globally Disable All Comments”. But, a quick and easy solution does exist which does not require a plugin! To be clear, I’m talking about still showing the existing comments, but not … Read more

How to Hide Taxonomy Meta Boxes from the WordPress Editor Sidebar

Remove WordPress meta fields from the editor

Here’s the situation: You’ve created some custom Taxonomies and custom Post Types using the Custom Post Type UI Plugin (or using PHP code). You’re using Advanced Custom Fields (or another plugin) to manage your Taxonomy settings, so you do NOT want those meta boxes to appear in the sidebar of the WordPress editor. I found … Read more

Oxygen vs. Divi: Which WordPress Builder Is Best?

Divi vs. Oxygen Builder

Divi is one of the most popular drag-and-drop WordPress builder themes out there today. As a long time Divi user myself, I was super excited (and envious) when I learned about some of the killer features of Oxygen, a newer WordPress builder that claims to create fast bloat-free code. After building a couple of sites … Read more

How to Give a WordPress Popup Maker Popup its Own URL for Sharing

Web development clients seem to love popups. They’re always asking me to add popups to websites. My “go to” solution for WordPress popups is the popular Popup Maker plugin. But, as explained in this article, WordPress Popup Maker has had its “popup” custom post type set to “private” since version 1.7. While there are cases … Read more

Where to Get Free Stock Photos, Videos, and Icons for Your Website

Photo from Pixabay

Stock photography can be expensive. And randomly grabbing licensed images from the Internet can cost you thousands of dollars if you’re found violating copyright and threatened with legal action (this happened to someone I talked to at a Meetup). Filtered Google Search You can find free legal images through a filtered Google search, but I … Read more

Fix the WordPress Divi Contact Form Error “Please refresh the page and try again”

On one of my sites, my Divi contact form worked great on desktop but someone told me it didn’t work on mobile. Sure enough, they were right! On my iPhone, I got this message after submitting the form: “Please refresh the page and try again.” In French, the error is “Veuillez actualiser la page et … Read more

How to Make All of Your Divi Accordions Start Out Closed (without JavaScript!)

Divi Accordion with all items closed!

Many people who use the WordPress Divi Accordion Module want it to start out closed by default. Every WordPress client I have who uses the Divi Accordion has asked for it, and there are many people online asking about it. The way it works now is that the first element of the accordion defaults to open, … Read more

Create a WordPress Multisite Network with Different Domain Names

Construction cranes

I had a situation where I needed to create a WordPress Multisite network of sites with each site having completely unique domain names.  I found everything I needed by Googling around and I got it to work, but I wanted to document it for later use because there are some “gotchas”.  Here’s the procedure. Note, my … Read more

Map a Different Domain Name to a WordPress Page or Post

WW2 Fighter

I had a client who wanted to map a domain name (different than the site’s root) directly to a WordPress Page, and not show the WordPress URL. For example, let’s say you had a WordPress blog with this Page:http://myblog.com/my-first-post/ But let’s say you want the URL of that post to be http://airplanesarecool.com. Of course, you could … Read more