Version Description
Download this release
Release Info
Developer | WebFactory |
Plugin | WP Force SSL |
Version | 1.56 |
Comparing to | |
See all releases |
Code changes from version 1.55 to 1.56
- js/wpfs-script.js +2 -2
- readme.txt +17 -9
- wp-force-ssl.php +6 -4
- wp301/wp301-logo.png +0 -0
- wp301/wp301.js +128 -0
- wp301/wp301.php +295 -0
js/wpfs-script.js
CHANGED
@@ -27,7 +27,7 @@
|
|
27 |
return tmp;
|
28 |
} // block_ui
|
29 |
|
30 |
-
// test
|
31 |
$('.wpfs_test_ssl').on('click', function(e) {
|
32 |
e.preventDefault();
|
33 |
|
@@ -83,7 +83,7 @@
|
|
83 |
});
|
84 |
|
85 |
return false;
|
86 |
-
}); //
|
87 |
|
88 |
// save settings
|
89 |
$('#wpfs_save_settings').on('click', function(e) {
|
27 |
return tmp;
|
28 |
} // block_ui
|
29 |
|
30 |
+
// test SSL certificate
|
31 |
$('.wpfs_test_ssl').on('click', function(e) {
|
32 |
e.preventDefault();
|
33 |
|
83 |
});
|
84 |
|
85 |
return false;
|
86 |
+
}); // test SSL certificate
|
87 |
|
88 |
// save settings
|
89 |
$('#wpfs_save_settings').on('click', function(e) {
|
readme.txt
CHANGED
@@ -1,18 +1,20 @@
|
|
1 |
-
=== WP Force SSL ===
|
2 |
-
Contributors: WebFactory
|
3 |
-
Tags: ssl, force ssl, add ssl, enable ssl, https, ssl certificate, ssl redirect, redirect, mixed content, hsts
|
4 |
Requires at least: 4.6
|
5 |
-
Tested up to: 5.
|
6 |
Requires PHP: 5.2
|
7 |
-
Stable Tag: 1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
-
Enable SSL with 1 click! Add an SSL certificate & WP Force SSL to redirect site from HTTP to HTTPS.
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
-
WP Force SSL helps you redirect
|
|
|
|
|
16 |
|
17 |
To keep things fast & simple WP Force SSL is very lightweight - there are only two settings.
|
18 |
Access options via main Settings menu - Force SSL.
|
@@ -23,11 +25,11 @@ Access options via main Settings menu - Force SSL.
|
|
23 |
* Test certificate & you're done!
|
24 |
|
25 |
= SSL certificate testing tool =
|
26 |
-
WP Force SSL comes with an SSL certificate testing tool. Simply click "Test SSL certificate" and it'll test if the certificate is valid, properly installed, up-to date, and generally in good shape to be used on your site.
|
27 |
|
28 |
= Settings =
|
29 |
* Force SSL - automatically redirect all traffic from HTTP to HTTPS
|
30 |
-
* Enable HTTP Strict Transport Security (HSTS) - HSTS is a web security policy mechanism that helps to protect your site against protocol downgrade attacks and cookie hijacking. It allows web servers to declare that web browsers should interact with it using only HTTPS connections.
|
31 |
|
32 |
= Need support? =
|
33 |
We're here for you! Things get frustrating when they don't work so make sure you <a href="https://wordpress.org/support/plugin/wp-force-ssl/">open a support topic</a> in the official Force SSL forum. We answer all questions within a few hours!
|
@@ -66,6 +68,12 @@ No, nothing. After activating WP Force SSL, the main option "redirect SSL" will
|
|
66 |
|
67 |
== Changelog ==
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
= v1.55 =
|
70 |
- 2020/01/22
|
71 |
- minor bug fixes
|
1 |
+
=== WP Force SSL & HTTPS SSL Redirect ===
|
2 |
+
Contributors: WebFactory
|
3 |
+
Tags: ssl, force ssl, add ssl, enable ssl, https, ssl certificate, ssl redirect, redirect, mixed content, hsts, lets encrypt
|
4 |
Requires at least: 4.6
|
5 |
+
Tested up to: 5.6
|
6 |
Requires PHP: 5.2
|
7 |
+
Stable Tag: 1.56
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
Enable SSL & HTTPS SSL redirect with 1 click! Add an SSL certificate & WP Force SSL to redirect site from HTTP to HTTPS.
|
12 |
|
13 |
== Description ==
|
14 |
|
15 |
+
WP Force SSL helps you redirect insecure HTTP traffic to secure HTTPS one **without touching any code**. Just activate Force SSL and everything will be configured for you and SSL enabled. The entire site will move to HTTPS using your SSL certificate. It works with any SSL certificate. It can be free SSL certificate from Let's Encrypt or a paid SSL certificate.
|
16 |
+
|
17 |
+
How to add SSL & enable SSL? Most hosting companies support the free SSL certificate from Let's Encrypt, so just login to your hosting panel and add SSL certificate for free. You'll probably see a button labeled "Add SSL Certificate" or "Add Let's Encrypt Certificate" and after that it's 1 click to have the SSL enabled on your site.
|
18 |
|
19 |
To keep things fast & simple WP Force SSL is very lightweight - there are only two settings.
|
20 |
Access options via main Settings menu - Force SSL.
|
25 |
* Test certificate & you're done!
|
26 |
|
27 |
= SSL certificate testing tool =
|
28 |
+
WP Force SSL comes with an SSL certificate testing tool. Simply click "Test SSL certificate" and it'll test if the certificate is valid, properly installed, up-to date, and generally in good shape to be used on your site so you can force SSL.
|
29 |
|
30 |
= Settings =
|
31 |
* Force SSL - automatically redirect all traffic from HTTP to HTTPS
|
32 |
+
* Enable HTTP Strict Transport Security (HSTS) - HSTS is a web security policy mechanism that helps to protect your site against protocol downgrade attacks and cookie hijacking. It allows web servers to declare that web browsers should interact with it using only HTTPS connections. HSTS adds additional security to your site.
|
33 |
|
34 |
= Need support? =
|
35 |
We're here for you! Things get frustrating when they don't work so make sure you <a href="https://wordpress.org/support/plugin/wp-force-ssl/">open a support topic</a> in the official Force SSL forum. We answer all questions within a few hours!
|
68 |
|
69 |
== Changelog ==
|
70 |
|
71 |
+
= v1.56 =
|
72 |
+
- 2020/09/30
|
73 |
+
- minor bug fixes
|
74 |
+
- added promo for WP 301 Redirects PRO
|
75 |
+
- 602,200 downloads; 100,000 installations
|
76 |
+
|
77 |
= v1.55 =
|
78 |
- 2020/01/22
|
79 |
- minor bug fixes
|
wp-force-ssl.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
Description: Redirect all traffic from HTTP to HTTPS for your entire site.
|
6 |
Author: WebFactory Ltd
|
7 |
Author URI: https://www.webfactoryltd.com/
|
8 |
-
Version: 1.
|
9 |
Text Domain: wp-force-ssl
|
10 |
|
11 |
Copyright 2019 - 2020 WebFactory Ltd (email: support@webfactoryltd.com)
|
@@ -30,6 +30,9 @@ if (!defined('ABSPATH')) {
|
|
30 |
exit('You are not allowed to access this file directly.');
|
31 |
}
|
32 |
|
|
|
|
|
|
|
33 |
|
34 |
define('WPFSSL_OPTIONS_KEY', 'wpfssl_options');
|
35 |
define('WPFSSL_META_KEY', 'wpfssl_meta');
|
@@ -39,8 +42,8 @@ define('WPFSSL_META_KEY', 'wpfssl_meta');
|
|
39 |
class wpForceSSL
|
40 |
{
|
41 |
static $instance = false;
|
42 |
-
public $version = 0;
|
43 |
private $wpfs_settings = array();
|
|
|
44 |
public $plugin_url = '';
|
45 |
public $meta = array();
|
46 |
|
@@ -256,7 +259,7 @@ class wpForceSSL
|
|
256 |
<h1>
|
257 |
<?php _e('WP Force SSL', 'wp-force-ssl'); ?>
|
258 |
</h1>
|
259 |
-
|
260 |
<p>WP Force SSL is a one-click solution that helps redirect visitors from unsecure HTTP connection to a secure HTTPS one without the need to edit any code.<br>There's nothing to configure, just by activating the plugin everything is enabled and configured.</p>
|
261 |
|
262 |
<p>If you run into any problems <a href="https://wordpress.org/support/plugin/wp-force-ssl/" target="_blank">open a new topic</a> in the official support forum. We answer all questions within a few hours.</p>
|
@@ -397,7 +400,6 @@ class wpForceSSL
|
|
397 |
{
|
398 |
remove_filter('plugins_api_result', array($this, 'plugins_api_result'), 10);
|
399 |
$res = $this->add_plugin_favs('wp-reset', $res);
|
400 |
-
$res = $this->add_plugin_favs('wp-external-links', $res);
|
401 |
$res = $this->add_plugin_favs('eps-301-redirects', $res);
|
402 |
$res = $this->add_plugin_favs('simple-author-box', $res);
|
403 |
return $res;
|
5 |
Description: Redirect all traffic from HTTP to HTTPS for your entire site.
|
6 |
Author: WebFactory Ltd
|
7 |
Author URI: https://www.webfactoryltd.com/
|
8 |
+
Version: 1.56
|
9 |
Text Domain: wp-force-ssl
|
10 |
|
11 |
Copyright 2019 - 2020 WebFactory Ltd (email: support@webfactoryltd.com)
|
30 |
exit('You are not allowed to access this file directly.');
|
31 |
}
|
32 |
|
33 |
+
require_once 'wp301/wp301.php';
|
34 |
+
new wf_wp301(__FILE__, 'settings_page_wpfs-settings');
|
35 |
+
|
36 |
|
37 |
define('WPFSSL_OPTIONS_KEY', 'wpfssl_options');
|
38 |
define('WPFSSL_META_KEY', 'wpfssl_meta');
|
42 |
class wpForceSSL
|
43 |
{
|
44 |
static $instance = false;
|
|
|
45 |
private $wpfs_settings = array();
|
46 |
+
public $version = 0;
|
47 |
public $plugin_url = '';
|
48 |
public $meta = array();
|
49 |
|
259 |
<h1>
|
260 |
<?php _e('WP Force SSL', 'wp-force-ssl'); ?>
|
261 |
</h1>
|
262 |
+
<hr>
|
263 |
<p>WP Force SSL is a one-click solution that helps redirect visitors from unsecure HTTP connection to a secure HTTPS one without the need to edit any code.<br>There's nothing to configure, just by activating the plugin everything is enabled and configured.</p>
|
264 |
|
265 |
<p>If you run into any problems <a href="https://wordpress.org/support/plugin/wp-force-ssl/" target="_blank">open a new topic</a> in the official support forum. We answer all questions within a few hours.</p>
|
400 |
{
|
401 |
remove_filter('plugins_api_result', array($this, 'plugins_api_result'), 10);
|
402 |
$res = $this->add_plugin_favs('wp-reset', $res);
|
|
|
403 |
$res = $this->add_plugin_favs('eps-301-redirects', $res);
|
404 |
$res = $this->add_plugin_favs('simple-author-box', $res);
|
405 |
return $res;
|
wp301/wp301-logo.png
ADDED
Binary file
|
wp301/wp301.js
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Campaign for WP 301 Redirects PRO
|
3 |
+
* (c) WebFactory Ltd, 2020
|
4 |
+
*/
|
5 |
+
|
6 |
+
jQuery(document).ready(function ($) {
|
7 |
+
$('#wp301promo_dismiss').on('click', function (e) {
|
8 |
+
e.preventDefault();
|
9 |
+
|
10 |
+
var slug = $(this).data('plugin-slug');
|
11 |
+
|
12 |
+
$.get({
|
13 |
+
url: ajaxurl,
|
14 |
+
data: {
|
15 |
+
action: 'wp301_promo_dismiss',
|
16 |
+
slug: slug,
|
17 |
+
_ajax_nonce: wp301_promo.nonce_wp301_promo_dismiss,
|
18 |
+
},
|
19 |
+
})
|
20 |
+
.always(function (data) {})
|
21 |
+
.done(function (data) {
|
22 |
+
if (data.success) {
|
23 |
+
if (slug == 'dashboard') {
|
24 |
+
$('#wp301promo_widget').hide();
|
25 |
+
} else {
|
26 |
+
$('#wp301-dialog').dialog('close');
|
27 |
+
}
|
28 |
+
} else {
|
29 |
+
alert('Sorry, something is not right. Please reload the page and try again.');
|
30 |
+
}
|
31 |
+
})
|
32 |
+
.fail(function (data) {
|
33 |
+
alert('Sorry, something is not right. Please reload the page and try again.');
|
34 |
+
});
|
35 |
+
}); // dismiss
|
36 |
+
|
37 |
+
|
38 |
+
$('#wp301promo_submit').on('click', function (e) {
|
39 |
+
e.preventDefault();
|
40 |
+
|
41 |
+
var btn = $('#wp301promo_submit');
|
42 |
+
var name = $('#wp301promo_name').val();
|
43 |
+
var email = $('#wp301promo_email').val();
|
44 |
+
var plugin = $('#wp301promo_plugin').val();
|
45 |
+
var position = $('#wp301promo_position').val();
|
46 |
+
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
|
47 |
+
|
48 |
+
if (name.length < 2 || name.length > 128) {
|
49 |
+
$('#wp301promo_name').focus();
|
50 |
+
alert('Please enter your name. Thank you 👍');
|
51 |
+
return false;
|
52 |
+
}
|
53 |
+
if (!regex.test(email) || email.lenght > 128) {
|
54 |
+
$('#wp301promo_email').focus();
|
55 |
+
alert('Please enter a valid email address. Thank you 👍');
|
56 |
+
return false;
|
57 |
+
}
|
58 |
+
|
59 |
+
$(btn).addClass('disabled');
|
60 |
+
$.get({
|
61 |
+
url: ajaxurl,
|
62 |
+
data: {
|
63 |
+
action: 'wp301_promo_submit',
|
64 |
+
_ajax_nonce: wp301_promo.nonce_wp301_promo_submit,
|
65 |
+
name: name,
|
66 |
+
email: email,
|
67 |
+
position: position,
|
68 |
+
plugin: plugin,
|
69 |
+
},
|
70 |
+
})
|
71 |
+
.always(function (data) {
|
72 |
+
$(btn).removeClass('disabled');
|
73 |
+
})
|
74 |
+
.done(function (data) {
|
75 |
+
if (data.success) {
|
76 |
+
alert(data.data);
|
77 |
+
|
78 |
+
if (position == 'dashboard') {
|
79 |
+
$('#wp301promo_widget').hide();
|
80 |
+
} else {
|
81 |
+
$('#wp301-dialog').dialog('close');
|
82 |
+
}
|
83 |
+
} else {
|
84 |
+
alert(data.data);
|
85 |
+
}
|
86 |
+
})
|
87 |
+
.fail(function (data) {
|
88 |
+
alert('Sorry, something is not right. Please reload the page and try again.');
|
89 |
+
});
|
90 |
+
});
|
91 |
+
|
92 |
+
|
93 |
+
$('#wp301promo_name, #wp301promo_email').on('keypress', function (e) {
|
94 |
+
if (e.which == 13) {
|
95 |
+
$('#wp301promo_submit').trigger('click');
|
96 |
+
}
|
97 |
+
}); // on enter
|
98 |
+
|
99 |
+
|
100 |
+
if (wp301_promo.open_popup && $('#wp301-dialog').length == 1) {
|
101 |
+
$('#wp301-dialog').dialog({
|
102 |
+
dialogClass: 'wp-dialog wp301-dialog',
|
103 |
+
modal: true,
|
104 |
+
resizable: false,
|
105 |
+
width: 550,
|
106 |
+
height: 'auto',
|
107 |
+
show: 'fade',
|
108 |
+
hide: 'fade',
|
109 |
+
close: function (event, ui) {},
|
110 |
+
open: function (event, ui) {
|
111 |
+
$(this)
|
112 |
+
.siblings()
|
113 |
+
.find('span.ui-dialog-title')
|
114 |
+
.html('Get a WP 301 Redirects PRO license for FREE <del>$158</del>');
|
115 |
+
wp301_fix_dialog_close(event, ui);
|
116 |
+
},
|
117 |
+
autoOpen: true,
|
118 |
+
closeOnEscape: false,
|
119 |
+
});
|
120 |
+
} // open dialog
|
121 |
+
}); // jQuery ready
|
122 |
+
|
123 |
+
|
124 |
+
function wp301_fix_dialog_close(event, ui) {
|
125 |
+
jQuery('.ui-widget-overlay').bind('click', function () {
|
126 |
+
jQuery('#' + event.target.id).dialog('close');
|
127 |
+
});
|
128 |
+
} // wp301_fix_dialog_close
|
wp301/wp301.php
ADDED
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Campaign for WP 301 Redirects PRO
|
5 |
+
* (c) WebFactory Ltd, 2020
|
6 |
+
*/
|
7 |
+
|
8 |
+
|
9 |
+
if (false == class_exists('wf_wp301')) {
|
10 |
+
class wf_wp301
|
11 |
+
{
|
12 |
+
var $plugin_file = '';
|
13 |
+
var $plugin_slug = '';
|
14 |
+
var $plugin_screen = '';
|
15 |
+
var $options = '';
|
16 |
+
var $disable_dashboard = true;
|
17 |
+
|
18 |
+
|
19 |
+
function __construct($plugin_file, $plugin_screen)
|
20 |
+
{
|
21 |
+
$this->plugin_file = $plugin_file;
|
22 |
+
$this->plugin_slug = basename(dirname($plugin_file));
|
23 |
+
$this->plugin_screen = $plugin_screen;
|
24 |
+
$this->options = get_option('wp301promo', array());
|
25 |
+
|
26 |
+
if (!is_admin() || !empty($this->options['email_submitted']) || date('Y-m-d') > '2020-12-15') {
|
27 |
+
return;
|
28 |
+
} else {
|
29 |
+
add_action('admin_init', array($this, 'init'));
|
30 |
+
}
|
31 |
+
} // __construct
|
32 |
+
|
33 |
+
|
34 |
+
function init()
|
35 |
+
{
|
36 |
+
add_action('wp_dashboard_setup', array($this, 'add_widget'));
|
37 |
+
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
|
38 |
+
add_action('wp_ajax_wp301_promo_submit', array($this, 'ajax_submit'));
|
39 |
+
add_action('wp_ajax_wp301_promo_dismiss', array($this, 'ajax_dismiss'));
|
40 |
+
add_action('admin_footer', array($this, 'admin_footer'));
|
41 |
+
} // init
|
42 |
+
|
43 |
+
|
44 |
+
function admin_enqueue_scripts()
|
45 |
+
{
|
46 |
+
$screen = get_current_screen();
|
47 |
+
|
48 |
+
if ($screen->base != 'dashboard' && $screen->id != $this->plugin_screen) {
|
49 |
+
return;
|
50 |
+
}
|
51 |
+
|
52 |
+
if ($screen->base == 'dashboard' && (!empty($this->options['popup_dismissed_dashboard']) || !empty($this->disable_dashboard))) {
|
53 |
+
return;
|
54 |
+
}
|
55 |
+
|
56 |
+
if ($screen->id == $this->plugin_screen) {
|
57 |
+
wp_enqueue_style('wp-jquery-ui-dialog');
|
58 |
+
wp_enqueue_script('jquery-ui-dialog');
|
59 |
+
}
|
60 |
+
|
61 |
+
wp_enqueue_script('wp301_promo', plugin_dir_url($this->plugin_file) . 'wp301/wp301.js');
|
62 |
+
|
63 |
+
$js_vars = array(
|
64 |
+
'nonce_wp301_promo_submit' => wp_create_nonce('wp301_submit'),
|
65 |
+
'nonce_wp301_promo_dismiss' => wp_create_nonce('wp301_dismiss'),
|
66 |
+
);
|
67 |
+
|
68 |
+
if (empty($this->options['popup_dismissed_' . $this->plugin_slug])) {
|
69 |
+
$js_vars['open_popup'] = true;
|
70 |
+
}
|
71 |
+
|
72 |
+
wp_localize_script('wp301_promo', 'wp301_promo', $js_vars);
|
73 |
+
} // admin_enqueue_scripts
|
74 |
+
|
75 |
+
|
76 |
+
function ajax_dismiss()
|
77 |
+
{
|
78 |
+
if (!wp_verify_nonce(@$_GET['_ajax_nonce'], 'wp301_dismiss')) {
|
79 |
+
wp_send_json_error('Something is not right. Please reload the page and try again.');
|
80 |
+
}
|
81 |
+
|
82 |
+
$slug = substr(strip_tags(trim(@$_GET['slug'])), 0, 64);
|
83 |
+
|
84 |
+
$this->options['popup_dismissed_' . $slug] = true;
|
85 |
+
$tmp = update_option('wp301promo', $this->options);
|
86 |
+
|
87 |
+
if ($tmp) {
|
88 |
+
wp_send_json_success();
|
89 |
+
} else {
|
90 |
+
wp_send_json_error();
|
91 |
+
}
|
92 |
+
} // ajax_dismiss
|
93 |
+
|
94 |
+
|
95 |
+
function ajax_submit()
|
96 |
+
{
|
97 |
+
if (!wp_verify_nonce(@$_GET['_ajax_nonce'], 'wp301_submit')) {
|
98 |
+
wp_send_json_error('Something is not right. Please reload the page and try again.');
|
99 |
+
}
|
100 |
+
|
101 |
+
$email = strip_tags(trim(@$_GET['email']));
|
102 |
+
$name = strip_tags(trim(@$_GET['name']));
|
103 |
+
$plugin = strip_tags(trim(@$_GET['plugin'])) . '-' . strip_tags(trim(@$_GET['position']));
|
104 |
+
|
105 |
+
if (!is_email($email)) {
|
106 |
+
wp_send_json_error('Please enter a valid email address.');
|
107 |
+
}
|
108 |
+
|
109 |
+
$url = add_query_arg(array('name' => $name, 'email' => $email, 'plugin' => $plugin), 'https://wp301redirects.com/subscribe/');
|
110 |
+
|
111 |
+
$response = wp_remote_get($url, array('timeout' => 25));
|
112 |
+
|
113 |
+
if (is_wp_error($response)) {
|
114 |
+
wp_send_json_error('Something is not right. Please reload the page and try again.');
|
115 |
+
}
|
116 |
+
|
117 |
+
$body = @json_decode(wp_remote_retrieve_body($response), true);
|
118 |
+
if (empty($body['success'])) {
|
119 |
+
wp_send_json_error('Something is not right. Please reload the page and try again.');
|
120 |
+
}
|
121 |
+
|
122 |
+
$this->options['email_submitted'] = true;
|
123 |
+
update_option('wp301promo', $this->options);
|
124 |
+
wp_send_json_success('Thank you for trusting us with your email! You\'ll hear from us soon 🚀');
|
125 |
+
} // ajax_submit
|
126 |
+
|
127 |
+
|
128 |
+
function add_widget()
|
129 |
+
{
|
130 |
+
if (!empty($this->options['popup_dismissed_dashboard']) || !empty($this->disable_dashboard)) {
|
131 |
+
return;
|
132 |
+
}
|
133 |
+
|
134 |
+
add_meta_box('wp301promo_widget', 'Get a WP 301 Redirects PRO license for FREE <del>$158</del>', array($this, 'widget_content'), 'dashboard', 'side', 'high');
|
135 |
+
} // add_widget
|
136 |
+
|
137 |
+
|
138 |
+
function widget_content()
|
139 |
+
{
|
140 |
+
$out = '';
|
141 |
+
|
142 |
+
$out .= '<style>';
|
143 |
+
$out .= '#wp301promo_widget .disabled { pointer-events: none; }';
|
144 |
+
$out .= '#wp301promo_widget label { font-weight: normal; display: inline-block; width: 15%; margin-bottom: 10px; }';
|
145 |
+
$out .= '#wp301promo_widget input { width: 74%; margin-bottom: 10px; }';
|
146 |
+
$out .= '#wp301promo_widget .button-primary { padding: 14px 28px; text-decoration: none; line-height: 1; }';
|
147 |
+
$out .= '#wp301promo_dismiss { font-style: italic; display: inline-block; color: #444; text-decoration: none; margin: 8px 0 0 0; }';
|
148 |
+
$out .= '#wp301promo_dismiss:hover { text-decoration: underline; }';
|
149 |
+
$out .= '#wp301promo_widget, #wp301promo_widget p { font-size: 14px; }';
|
150 |
+
$out .= '#wp301promo_widget .title301 { font-weight: 600; margin: 10px 0 -10px 0; }';
|
151 |
+
$out .= '#wp301promo_widget img { max-width: 45%; max-height: 80px; }';
|
152 |
+
$out .= '#wp301promo_widget .center { text-align: center; }';
|
153 |
+
$out .= '#wp301promo_email { margin-bottom: 0 !important; }';
|
154 |
+
$out .= '#wp301promo_widget { background-color: #fafafa; }';
|
155 |
+
$out .= '#wp301promo_widget li a { text-decoration: underline; }';
|
156 |
+
$out .= '#wp301promo_widget .wp301inside { padding: 25px 12px 0px 12px; position: relative; }';
|
157 |
+
$out .= '#wp301promo_widget p { margin-top: 14px; line-height: 1.5; }';
|
158 |
+
$out .= '#wp301promo_widget small { margin-left: 17%; }';
|
159 |
+
$out .= '#wp301promo_widget ul { font-size: 14px; margin: 0 0 20px 0; list-style-type: disc; list-style-position: inside; }';
|
160 |
+
$out .= '#wp301promo_widget li { margin-bottom: 3px; }';
|
161 |
+
$out .= '#wp301promo_submit span { display: none; text-decoration: none; margin-right: 10px; animation: wf-spin-animation 1.5s infinite linear; }';
|
162 |
+
$out .= '#wp301promo_submit.disabled span { display: inline-block; }';
|
163 |
+
$out .= '@keyframes wf-spin-animation {
|
164 |
+
from { transform: rotate(0deg); }
|
165 |
+
to { transform: rotate(360deg); }
|
166 |
+
}';
|
167 |
+
$out .= '#wp301promo_widget .inside { overflow: hidden; margin: 0; }
|
168 |
+
#wp301promo_widget .ribbon { margin: 0; padding: 11px 20px 10px 20px; background: #007cba; color: #FFF; font-weight: 800; position: absolute; top: -17px; right: -17px; transform: translateX(30%) translateY(0%) rotate(45deg); transform-origin: top left; letter-spacing: 1px; }
|
169 |
+
#wp301promo_widget .ribbon:before, #wp301promo_widget .ribbon:after { content: ""; position: absolute; top:0; margin: 0 -1px; width: 100%; height: 100%; background: #007cba; }
|
170 |
+
#wp301promo_widget .ribbon:before { right:100%; }
|
171 |
+
#wp301promo_widget .ribbon:after { left:100%; }';
|
172 |
+
$out .= '</style>';
|
173 |
+
|
174 |
+
$plugin_url = plugin_dir_url($this->plugin_file);
|
175 |
+
|
176 |
+
$out .= '<div class="ribbon">FREE</div>';
|
177 |
+
$out .= '<div class="wp301inside">';
|
178 |
+
|
179 |
+
$out .= '<div class="center"><a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-dashboard" target="_blank"><img src="' . $plugin_url . 'wp301/wp301-logo.png' . '" alt="WP 301 Redirects PRO" title="WP 301 Redirects PRO"></a></div>';
|
180 |
+
|
181 |
+
$out .= '<p>On November 6th <a href="https://www.webfactoryltd.com/" target="_blank">WebFactory Ltd</a> will give away a limited number of lifetime WP 301 Redirect PRO licenses, <b>each for 10 sites</b>. A $158 retail value! 🚀 Leave your email, we\'ll send you a link & download your copy.</p><p style="margin-bottom: 0;"><b>What do I get?</b></p>';
|
182 |
+
|
183 |
+
$out .= '<ul>';
|
184 |
+
$out .= '<li>Automatically fix 404 errors & URL typos</li>';
|
185 |
+
$out .= '<li>Create advanced redirect rules & control affiliate links</li>';
|
186 |
+
$out .= '<li>Detailed log of all redirects & 404s</li>';
|
187 |
+
$out .= '<li>Manage all sites\' licenses from a central Dashboard</li>';
|
188 |
+
$out .= '<li>Lifetime license for 10 sites. <a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-dashboard" target="_blank">See all features</a></li>';
|
189 |
+
$out .= '</ul>';
|
190 |
+
|
191 |
+
$out .= '
|
192 |
+
<div>
|
193 |
+
<label for="wp301promo_name">Name:</label>
|
194 |
+
<input type="text" name="wp301promo_name" id="wp301promo_name" placeholder="How shall we call you?"><br>
|
195 |
+
<label for="wp301promo_email">Email:</label>
|
196 |
+
<input type="text" name="wp301promo_email" id="wp301promo_email" placeholder="Your best email address to get the plugin"><br>
|
197 |
+
<small>We hate spam as much as you do and never send it!</small>
|
198 |
+
<input type="hidden" id="wp301promo_plugin" value="' . $this->plugin_slug . '">
|
199 |
+
<input type="hidden" id="wp301promo_position" value="dashboard">
|
200 |
+
</div>
|
201 |
+
|
202 |
+
<p class="center">
|
203 |
+
<a id="wp301promo_submit" class="button button-primary" href="#"><span class="dashicons dashicons-update"></span>I Want My FREE License <del>$158</del></a><br>
|
204 |
+
<a id="wp301promo_dismiss" class="" href="#" data-plugin-slug="dashboard">I don\'t want a free license; don\'t show this again</a>
|
205 |
+
</p>
|
206 |
+
</div>';
|
207 |
+
|
208 |
+
echo $out;
|
209 |
+
} // widget_content
|
210 |
+
|
211 |
+
|
212 |
+
function admin_footer()
|
213 |
+
{
|
214 |
+
$screen = get_current_screen();
|
215 |
+
if ($screen->id != $this->plugin_screen) {
|
216 |
+
return;
|
217 |
+
}
|
218 |
+
|
219 |
+
$out = '';
|
220 |
+
|
221 |
+
$out .= '<style>';
|
222 |
+
$out .= '#wp301promo_widget .disabled { pointer-events: none; }';
|
223 |
+
$out .= '.wp301-dialog .ui-dialog-titlebar-close { visibility: hidden; }';
|
224 |
+
$out .= '#wp301-dialog label { font-weight: normal; display: inline-block; width: 15%; margin-bottom: 10px; }';
|
225 |
+
$out .= '#wp301-dialog input { width: 74%; margin-bottom: 10px; }';
|
226 |
+
$out .= '#wp301-dialog .button-primary { padding: 14px 28px; text-decoration: none; line-height: 1; }';
|
227 |
+
$out .= '#wp301-dialog, #wp301-dialog p { font-size: 14px; }';
|
228 |
+
$out .= '#wp301-dialog .title301 { font-size: 1.3em; font-weight: 600; margin: 10px 0 -10px 0; }';
|
229 |
+
$out .= '#wp301-dialog img { max-width: 60%; }';
|
230 |
+
$out .= '#wp301-dialog li a { text-decoration: underline; }';
|
231 |
+
$out .= '#wp301-dialog small { margin-left: 16%; }';
|
232 |
+
$out .= '#wp301-dialog .center { text-align: center; }';
|
233 |
+
$out .= '#wp301-dialog, .wp301-dialog .ui-dialog-titlebar { background-color: #fafafa; }';
|
234 |
+
$out .= '#wp301-dialog .wp301inside { padding: 12px 12px 0px 12px; }';
|
235 |
+
$out .= '#wp301-dialog p { margin-top: 14px; line-height: 1.5; }';
|
236 |
+
$out .= '#wp301-dialog ul { margin: 0 0 20px 0; list-style-type: disc; list-style-position: inside; }';
|
237 |
+
$out .= '#wp301-dialog li { margin-bottom: 3px; }';
|
238 |
+
$out .= '#wp301promo_dismiss { display: inline-block; color: #444; text-decoration: none; margin: 8px 0 0 0; }';
|
239 |
+
$out .= '#wp301promo_dismiss:hover { text-decoration: underline; }';
|
240 |
+
$out .= '#wp301promo_submit span { display: none; text-decoration: none; margin-right: 10px; animation: wf-spin-animation 1.5s infinite linear; }';
|
241 |
+
$out .= '#wp301promo_submit.disabled span { display: inline-block; }';
|
242 |
+
$out .= '@keyframes wf-spin-animation {
|
243 |
+
from { transform: rotate(0deg); }
|
244 |
+
to { transform: rotate(360deg); }
|
245 |
+
}';
|
246 |
+
$out .= '#wp301-dialog .inside { overflow: hidden; margin: 0; }
|
247 |
+
#wp301-dialog .ribbon { margin: 0; padding: 11px 20px 10px 20px; background: #007cba; color: #FFF; font-weight: 800; position: absolute; top: -17px; right: -17px; transform: translateX(30%) translateY(0%) rotate(45deg); transform-origin: top left; letter-spacing: 1px; }
|
248 |
+
#wp301-dialog .ribbon:before, #wp301-dialog .ribbon:after { content: ""; position: absolute; top:0; margin: 0 -1px; width: 100%; height: 100%; background: #007cba; }
|
249 |
+
#wp301-dialog .ribbon:before { right:100%; }
|
250 |
+
#wp301-dialog .ribbon:after { left:100%; }';
|
251 |
+
$out .= '</style>';
|
252 |
+
|
253 |
+
$out .= '<div id="wp301-dialog" style="display: none;" title="Get a WP 301 Redirects PRO license for FREE"><span class="ui-helper-hidden-accessible"><input type="text"/></span>';
|
254 |
+
|
255 |
+
$plugin_url = plugin_dir_url($this->plugin_file);
|
256 |
+
|
257 |
+
$out .= '<div class="wp301inside">';
|
258 |
+
$out .= '<div class="ribbon">FREE</div>';
|
259 |
+
|
260 |
+
$out .= '<div class="center"><a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-popup" target="_blank"><img src="' . $plugin_url . 'wp301/wp301-logo.png' . '" alt="WP 301 Redirects PRO" title="WP 301 Redirects PRO"></a></div>';
|
261 |
+
|
262 |
+
$out .= '<p><a href="https://www.webfactoryltd.com/" target="_blank">WebFactory Ltd</a> is giving away a limited number of lifetime WP 301 Redirect PRO licenses, <b>each for 10 sites</b>. A $158 retail value! 🚀 Leave your email, we\'ll send you a link in a few moments & download your copy for free.</p><p style="margin-bottom: 0;"><b>What do I get?</b></p>';
|
263 |
+
|
264 |
+
$out .= '<ul>';
|
265 |
+
$out .= '<li>Automatically fix 404 errors & URL typos</li>';
|
266 |
+
$out .= '<li>Create advanced redirect rules & control affiliate links</li>';
|
267 |
+
$out .= '<li>Detailed log of all redirects & 404s</li>';
|
268 |
+
$out .= '<li>Manage all sites\' licenses from a central Dashboard</li>';
|
269 |
+
$out .= '<li>Lifetime license for 10 sites. <a href="https://wp301redirects.com/free-license/?ref=free-' . $this->plugin_slug . '-popup" target="_blank">See all features</a></li>';
|
270 |
+
$out .= '</ul>';
|
271 |
+
|
272 |
+
$out .= '
|
273 |
+
<div>
|
274 |
+
<label for="wp301promo_name">Name:</label>
|
275 |
+
<input type="text" name="wp301promo_name" id="wp301promo_name" placeholder="How shall we call you?"><br>
|
276 |
+
<label for="wp301promo_email">Email:</label>
|
277 |
+
<input type="text" name="wp301promo_email" id="wp301promo_email" placeholder="Your best email address to get the plugin"><br>
|
278 |
+
<small>We hate spam as much as you do and never send it!</small>
|
279 |
+
<input type="hidden" id="wp301promo_plugin" value="' . $this->plugin_slug . '">
|
280 |
+
<input type="hidden" id="wp301promo_position" value="popup">
|
281 |
+
</div>
|
282 |
+
|
283 |
+
<p class="center">
|
284 |
+
<a id="wp301promo_submit" class="button button-primary" href="#"><span class="dashicons dashicons-update"></span>I Want My FREE License <del>$158</del></a><br>
|
285 |
+
<a id="wp301promo_dismiss" class="" href="#" data-plugin-slug="' . $this->plugin_slug . '">I don\'t want a free license; don\'t show this again</a>
|
286 |
+
</p>
|
287 |
+
|
288 |
+
</div>';
|
289 |
+
|
290 |
+
$out .= '</div>';
|
291 |
+
|
292 |
+
echo $out;
|
293 |
+
} // wp_footer
|
294 |
+
} // wf_wp301
|
295 |
+
}
|