Force SSL with WordPress

By  on  

WordPress, the popular blogging CMS platform, is used as an all-purpose site software these days.  The difficulty in using all-purposes solutions is that they are often difficult to customize when edge cases pop up;  one of those edge cases can be forcing SSL.  Many form pages, for example, will be secured to gain user trust before filling them out.  WordPress provides an excellent method to secure individual pages!  Here's how you can force SSL within specific WordPress pages!

The PHP

To secure a specific WordPress post or page, you'll need to know its ID.  When you know its ID, it's securing the page is easy:

function force_ssl($force_ssl, $id = 0) {
	// A list of posts that should be SSL
	$ssl_posts = array(1, 12, 19);

	if(in_array($id, $ssl_posts)) {
		$force_ssl = true;
	}
    return $force_ssl;
}
add_filter('force_ssl' , 'force_ssl', 1, 3);

The force_ssl hook allows for us to check the post ID and force SSL if the post ID is in array of posts that should be secured!  Aren't WordPress hooks great to work with?

Recent Features

  • By
    Responsive Images: The Ultimate Guide

    Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today's websites and devices become ever more varied, a plethora of responsive images...

  • By
    Designing for Simplicity

    Before we get started, it's worth me spending a brief moment introducing myself to you. My name is Mark (or @integralist if Twitter happens to be your communication tool of choice) and I currently work for BBC News in London England as a principal engineer/tech...

Incredible Demos

  • By
    Display Images as Grayscale with CSS Filters

    CSS filters aren't yet widely supported but they are indeed impressive and a modern need for web imagery.  CSS filters allow you to modify the display of images in a variety of ways, one of those ways being displaying images as grayscale. Doing so requires the...

  • By
    Create a Download Package Using MooTools Moousture

    Zohaib Sibt-e-Hassan recently released a great mouse gestures library for MooTools called Moousture. Moousture allows you to trigger functionality by moving your mouse in specified custom patterns. Too illustrate Moousture's value, I've created an image download builder using Mooustures and PHP. The XHTML We provide...

Discussion

  1. Keith Henry

    Be very careful securing some pages and not others on the same site – any cookies created in the secure area (for instance for login or user details) will be sent unencrypted to non-SSL pages, making interception attacks easy.

  2. Sunny

    Is it feasible to turn off cookies for secured pages? If so, how?

  3. Lynne

    Wondering what file you paste in the code above to secure a page/s with SSL.
    Also, are you saying that this piece of code:
    $ssl_posts = array(1, 12, 19); you simply replace those numbers with your page id?
    And with this code:
    add_filter(‘force_ssl’ , ‘force_ssl’, 1, 3); what is it’s purpose and do you also replace these numbers?
    I’d also be interested to know more about what Keith Henry has said about cookies potentially being sent unencrypted to non-SSL pages.

  4. Chris Waters

    Does this filter still exist? I can’t find any reference to it in the WordPress docs or code. As a result, I can’t seem to get this snippet working.

  5. Works like a charm!

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!