Changed WordPress Blog to Use HTTPS

A few days ago I noticed some odd errors in my PHP error log indicating some HTTPS accesses to my site which shouldn’t have been possible. Upon further investigation, it turns out that my web host, Surpass Hosting, had enabled cPanel’s AutoSSL on their shared servers back on January 24th, 2018 or so. I decided to take advantage of this and began migrating my blog to use HTTPS. 

I first went into the General Settings and changed the WordPress Address (URL) and Site Address (URL) to use https. I then followed the directions at Replacing Image Links in WordPress After Installing an SSL Certificate – WPMU DEV to manually update my database using SQL commands. While there are plugins that could probably do this, I wanted to know exactly what SQL commands were being executed on my database. Note: I made a backup of the database before starting any of this. These are the commands I used to change my image and other links to use HTTPS (I replaced my actual domain name here to confuse bots):

UPDATE wp_posts
SET post_content = REPLACE(post_content,'src="http://blog.(','src="https://blog.(');

UPDATE wp_posts
SET post_content = REPLACE(post_content,'src="http://www.(','src="https://www.(');

UPDATE wp_posts
SET guid = REPLACE (guid, 'http://blog.(', 'https://blog.(') WHERE post_type = 'attachment';

UPDATE wp_posts
SET post_content = REPLACE(post_content,'href="http://blog.(','href="https://blog.(');

Because some of my featured images are external images on my main site being handled by Featured Image From URL, I also needed to update the wp_postmeta database. I used

SELECT * FROM wp_postmeta
WHERE meta_key = "fifu_image_url" AND meta_value != "";

to list the posts that had one and just manually updated these entries in my SQL editor directly.

I also had to modify the code in my widgets to avoid loading mixed content from my gallery and main website, which will also work over HTTPS now.

To make my local development environment match the web host, I then began to figure out how to get SSL working on my local Apache installation. I’ll save that endeavor for another post (which I did get working). 😃

Anyway, so far, so good.