Skip to content

Instantly share code, notes, and snippets.

@bueltge
Created November 15, 2012 21:09
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save bueltge/4081291 to your computer and use it in GitHub Desktop.
WordPress SSL
## .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
## wp-config.php
define( 'FORCE_SSL_LOGIN', TRUE );
define( 'FORCE_SSL_ADMIN', TRUE );
## Plugin
WordPress HTTPS
(http://wordpress.org/extend/plugins/wordpress-https/)
## Specific Page/Post for SSL
/**
* Plugin Name: Force SSL for specific pages
* Description:
* Text Domain:
* Domain Path: /languages
* Author: Frank B&uuml;ltge
* Author URI: http://bueltge.de/
* Donate URI: http://bueltge.de/wunschliste/
* Version: 1.0.0
*/
! defined( 'ABSPATH' ) and exit;
if ( ! function_exists( 'fb_force_ssl' ) ) {
add_filter( 'force_ssl' , 'fb_force_ssl', 1, 3 );
function fb_force_ssl( $force_ssl, $id = 0, $utrl = '' ) {
// A list of posts that should be SSL
$ssl_posts = array( 22, 312 );
if ( in_array( $id, $ssl_posts ) )
$force_ssl = TRUE;
return $force_ssl;
}
} // end if func exists
## Without Plugin WordPress HTTPS
add_action( 'template_redirect', 'fb_ssl_template_redirect', 1 );
function fb_ssl_template_redirect() {
if ( is_page( 123 ) && ! is_ssl() ) {
if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']), 301 );
exit();
} else {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
exit();
}
} else if ( !is_page( 123 ) && is_ssl() && !is_admin() ) {
if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
wp_redirect(preg_replace('|^https://|', 'http://', $_SERVER['REQUEST_URI']), 301 );
exit();
} else {
wp_redirect('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
exit();
}
}
}
or a smaller version, but not with fallbacks, if the url is wrong
add_filter( 'pre_post_link', 'fb_set_ssl_url', 10, 3 );
function fb_set_ssl_url( $permalink, $post, $leavename ) {
if ( 123 == $post->ID )
return preg_replace( '|^http://|', 'https://', $permalink );
return $permalink;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment