Version Description
- New Feature Change individual plugin url path
- Admin layout improvments
- Fix for Admin canonical filter remove if remove canonical option set
- PO translations update
- Translation
Download this release
Release Info
Developer | nsp-code |
Plugin | WP Hide & Security Enhancer |
Version | 1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1.7 to 1.2
- css/wph.css +1 -1
- include/admin-interface.class.php +159 -83
- include/functions.class.php +144 -4
- include/module.class.php +17 -1
- include/module.component.class.php +20 -0
- include/wph.class.php +15 -6
- modules/components/admin-admin_url.php +6 -5
- modules/components/general-meta.php +11 -1
- modules/components/rewrite-default.php +8 -1
- modules/components/rewrite-new_include_path.php +9 -4
- modules/components/rewrite-new_plugin_path.php +114 -4
- modules/components/rewrite-new_theme_path.php +7 -1
- modules/components/rewrite-new_upload_path.php +8 -3
- modules/components/rewrite-new_xml-rpc-path.php +6 -1
- modules/components/rewrite-wp_content_path.php +5 -1
- modules/module-rewrite.php +7 -1
- readme.txt +22 -8
- screenshot-1.png +0 -0
- wp-hide.php +1 -1
css/wph.css
CHANGED
@@ -33,7 +33,7 @@ table.wph_input tbody tr td.param {width: 50%}
|
|
33 |
table .select.multiple {height: 82px}
|
34 |
table.wph_input tbody tr td h4 {margin: 0px; padding-bottom: 6px}
|
35 |
table.wph_input tbody tr td h5 {font-size: 12px; font-weight: normal; margin: 0; padding-bottom: 6px; padding-top: 10px;}
|
36 |
-
table.wph_input tbody tr td.label label{
|
37 |
table.wph_input tbody tr td.label p, table.wph_input tbody tr td.label .description{ display: block; font-size: 12px; padding: 6px 0 !important; margin: 0 !important; font-style: normal; line-height: 16px; color: #AAA;}
|
38 |
table.wph_input tbody tr td.label .description .important {color: #d54e21}
|
39 |
table.wph_input tbody tr td.label .description .dashicons, table.wph_input tbody tr td.label .description span {display: inline-block}
|
33 |
table .select.multiple {height: 82px}
|
34 |
table.wph_input tbody tr td h4 {margin: 0px; padding-bottom: 6px}
|
35 |
table.wph_input tbody tr td h5 {font-size: 12px; font-weight: normal; margin: 0; padding-bottom: 6px; padding-top: 10px;}
|
36 |
+
table.wph_input tbody tr td.label label{ font-size: 13px; font-weight: bold; padding: 0; margin: 0; color: #333; cursor: default }
|
37 |
table.wph_input tbody tr td.label p, table.wph_input tbody tr td.label .description{ display: block; font-size: 12px; padding: 6px 0 !important; margin: 0 !important; font-style: normal; line-height: 16px; color: #AAA;}
|
38 |
table.wph_input tbody tr td.label .description .important {color: #d54e21}
|
39 |
table.wph_input tbody tr td.label .description .dashicons, table.wph_input tbody tr td.label .description span {display: inline-block}
|
include/admin-interface.class.php
CHANGED
@@ -4,6 +4,8 @@
|
|
4 |
class WPH_interface
|
5 |
{
|
6 |
var $screen_slug;
|
|
|
|
|
7 |
var $module;
|
8 |
var $module_settings;
|
9 |
var $interface_data;
|
@@ -29,9 +31,24 @@
|
|
29 |
{
|
30 |
|
31 |
$this->screen_slug = $_GET['page'];
|
|
|
32 |
|
33 |
//identify the module by slug
|
34 |
$this->module = $this->functions->get_module_by_slug($this->screen_slug);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
$this->_load_interface_data();
|
37 |
|
@@ -41,7 +58,8 @@
|
|
41 |
|
42 |
function _load_interface_data()
|
43 |
{
|
44 |
-
$this->module_settings = $this->functions->filter_settings( $this->module->get_module_settings()
|
|
|
45 |
$this->interface_data = $this->module->get_interface_data();
|
46 |
}
|
47 |
|
@@ -52,10 +70,20 @@
|
|
52 |
<div id="wph" class="wrap">
|
53 |
<h1><?php echo $this->interface_data['title'] ?></h1>
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
<div id="poststuff">
|
|
|
|
|
56 |
<div class="postbox">
|
57 |
<h3 class="handle"><?php echo $this->interface_data['handle_title'] ?></h3>
|
58 |
</div>
|
|
|
59 |
|
60 |
<div class="inside">
|
61 |
|
@@ -64,92 +92,15 @@
|
|
64 |
|
65 |
<?php
|
66 |
|
|
|
|
|
67 |
foreach($this->module_settings as $module_setting)
|
68 |
{
|
|
|
|
|
69 |
|
70 |
-
if(isset($module_setting['type']) && $module_setting['type'] == 'split')
|
71 |
-
{
|
72 |
-
?>
|
73 |
-
<p> </p>
|
74 |
-
<?php
|
75 |
-
|
76 |
-
continue;
|
77 |
-
}
|
78 |
-
|
79 |
-
if($module_setting['visible'] === FALSE)
|
80 |
-
continue;
|
81 |
|
82 |
-
|
83 |
-
<div class="postbox">
|
84 |
-
<table class="wph_input widefat">
|
85 |
-
<tbody>
|
86 |
-
|
87 |
-
<tr>
|
88 |
-
<td class="label">
|
89 |
-
<label for=""><?php echo $module_setting['label'] ?></label>
|
90 |
-
<?php
|
91 |
-
|
92 |
-
if(is_array($module_setting['description']))
|
93 |
-
{
|
94 |
-
foreach($module_setting['description'] as $description)
|
95 |
-
{
|
96 |
-
?>
|
97 |
-
<div class="description"><?php echo nl2br($description) ?></div>
|
98 |
-
<?php
|
99 |
-
}
|
100 |
-
}
|
101 |
-
else
|
102 |
-
{
|
103 |
-
?>
|
104 |
-
<p class="description"><?php echo nl2br($module_setting['description']) ?></p>
|
105 |
-
<?php
|
106 |
-
} ?>
|
107 |
-
</td>
|
108 |
-
</tr>
|
109 |
-
<tr>
|
110 |
-
<td class="data">
|
111 |
-
<?php if(!empty($module_setting['value_description'])) { ?><p class="description"><?php echo $module_setting['value_description'] ?></p><?php } ?>
|
112 |
-
<?php
|
113 |
-
|
114 |
-
$option_name = $module_setting['id'];
|
115 |
-
$value = $this->wph->get_setting_value( $option_name, $module_setting['default_value']);
|
116 |
-
|
117 |
-
switch($module_setting['input_type'])
|
118 |
-
{
|
119 |
-
case 'text' :
|
120 |
-
$class = 'text';
|
121 |
-
|
122 |
-
?><input name="<?php echo $module_setting['id'] ?>" class="<?php echo $class ?>" value="<?php echo $value ?>" placeholder="<?php echo $module_setting['placeholder'] ?>" type="text"><?php
|
123 |
-
|
124 |
-
break;
|
125 |
-
|
126 |
-
case 'radio' :
|
127 |
-
$class = 'radio';
|
128 |
-
|
129 |
-
?>
|
130 |
-
<fieldset>
|
131 |
-
<?php
|
132 |
-
|
133 |
-
foreach($module_setting['options'] as $option_value => $option_title)
|
134 |
-
{
|
135 |
-
?><label><input type="radio" class="<?php echo $class ?>" <?php checked($value, $option_value) ?> value="<?php echo $option_value ?>" name="<?php echo $module_setting['id'] ?>"> <span><?php echo $option_title ?></span></label><?php
|
136 |
-
}
|
137 |
-
|
138 |
-
?>
|
139 |
-
</fieldset>
|
140 |
-
<?php
|
141 |
-
|
142 |
-
break;
|
143 |
-
}
|
144 |
-
|
145 |
-
?>
|
146 |
-
</td>
|
147 |
-
</tr>
|
148 |
-
</tbody>
|
149 |
-
</table>
|
150 |
-
</div>
|
151 |
-
|
152 |
-
<?php
|
153 |
}
|
154 |
|
155 |
|
@@ -175,6 +126,131 @@
|
|
175 |
<?php
|
176 |
|
177 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
}
|
179 |
|
180 |
|
4 |
class WPH_interface
|
5 |
{
|
6 |
var $screen_slug;
|
7 |
+
var $tab_slug;
|
8 |
+
|
9 |
var $module;
|
10 |
var $module_settings;
|
11 |
var $interface_data;
|
31 |
{
|
32 |
|
33 |
$this->screen_slug = $_GET['page'];
|
34 |
+
$this->tab_slug = isset($_GET['component']) ? $_GET['component'] : FALSE;
|
35 |
|
36 |
//identify the module by slug
|
37 |
$this->module = $this->functions->get_module_by_slug($this->screen_slug);
|
38 |
+
|
39 |
+
if(empty($this->tab_slug) && $this->module->use_tabs === TRUE)
|
40 |
+
{
|
41 |
+
//get the first component
|
42 |
+
foreach($this->module->components as $module_component)
|
43 |
+
{
|
44 |
+
if( ! $module_component->title)
|
45 |
+
continue;
|
46 |
+
|
47 |
+
$this->tab_slug = $module_component->id;
|
48 |
+
break;
|
49 |
+
}
|
50 |
+
|
51 |
+
}
|
52 |
|
53 |
$this->_load_interface_data();
|
54 |
|
58 |
|
59 |
function _load_interface_data()
|
60 |
{
|
61 |
+
$this->module_settings = $this->functions->filter_settings( $this->module->get_module_settings($this->tab_slug ));
|
62 |
+
|
63 |
$this->interface_data = $this->module->get_interface_data();
|
64 |
}
|
65 |
|
70 |
<div id="wph" class="wrap">
|
71 |
<h1><?php echo $this->interface_data['title'] ?></h1>
|
72 |
|
73 |
+
<?php
|
74 |
+
|
75 |
+
if($this->module->use_tabs === TRUE)
|
76 |
+
$this->_generate_interface_tabs();
|
77 |
+
|
78 |
+
?>
|
79 |
+
|
80 |
<div id="poststuff">
|
81 |
+
|
82 |
+
<?php if(!empty($this->interface_data['handle_title'])) { ?>
|
83 |
<div class="postbox">
|
84 |
<h3 class="handle"><?php echo $this->interface_data['handle_title'] ?></h3>
|
85 |
</div>
|
86 |
+
<?php } ?>
|
87 |
|
88 |
<div class="inside">
|
89 |
|
92 |
|
93 |
<?php
|
94 |
|
95 |
+
$outputed_module = FALSE;
|
96 |
+
|
97 |
foreach($this->module_settings as $module_setting)
|
98 |
{
|
99 |
+
|
100 |
+
$this->_generate_module_html($module_setting, $outputed_module);
|
101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
|
103 |
+
$outputed_module = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
105 |
|
106 |
|
126 |
<?php
|
127 |
|
128 |
}
|
129 |
+
|
130 |
+
|
131 |
+
function _generate_module_html($module_setting, $outputed_module)
|
132 |
+
{
|
133 |
+
|
134 |
+
if(isset($module_setting['type']) && $module_setting['type'] == 'split' && $outputed_module === TRUE)
|
135 |
+
{
|
136 |
+
?>
|
137 |
+
<p> </p>
|
138 |
+
<?php
|
139 |
+
|
140 |
+
return;
|
141 |
+
}
|
142 |
+
else if (isset($module_setting['type']) && $module_setting['type'] == 'split' && $outputed_module !== TRUE)
|
143 |
+
{
|
144 |
+
|
145 |
+
return;
|
146 |
+
}
|
147 |
+
|
148 |
+
if($module_setting['visible'] === FALSE)
|
149 |
+
return;
|
150 |
+
|
151 |
+
?>
|
152 |
+
<div class="postbox">
|
153 |
+
<table class="wph_input widefat">
|
154 |
+
<tbody>
|
155 |
+
|
156 |
+
<tr>
|
157 |
+
<td class="label">
|
158 |
+
<label for=""><?php echo $module_setting['label'] ?></label>
|
159 |
+
<?php
|
160 |
+
|
161 |
+
if(is_array($module_setting['description']))
|
162 |
+
{
|
163 |
+
foreach($module_setting['description'] as $description)
|
164 |
+
{
|
165 |
+
?>
|
166 |
+
<div class="description"><?php echo nl2br($description) ?></div>
|
167 |
+
<?php
|
168 |
+
}
|
169 |
+
}
|
170 |
+
else
|
171 |
+
{
|
172 |
+
?>
|
173 |
+
<p class="description"><?php echo nl2br($module_setting['description']) ?></p>
|
174 |
+
<?php
|
175 |
+
} ?>
|
176 |
+
</td>
|
177 |
+
</tr>
|
178 |
+
<tr>
|
179 |
+
<td class="data">
|
180 |
+
<?php if(!empty($module_setting['value_description'])) { ?><p class="description"><?php echo $module_setting['value_description'] ?></p><?php } ?>
|
181 |
+
<?php
|
182 |
+
|
183 |
+
$option_name = $module_setting['id'];
|
184 |
+
$value = $this->wph->get_setting_value( $option_name, $module_setting['default_value']);
|
185 |
+
|
186 |
+
switch($module_setting['input_type'])
|
187 |
+
{
|
188 |
+
case 'text' :
|
189 |
+
$class = 'text';
|
190 |
+
|
191 |
+
?><input name="<?php echo $module_setting['id'] ?>" class="<?php echo $class ?>" value="<?php echo $value ?>" placeholder="<?php echo $module_setting['placeholder'] ?>" type="text"><?php
|
192 |
+
|
193 |
+
break;
|
194 |
+
|
195 |
+
case 'radio' :
|
196 |
+
$class = 'radio';
|
197 |
+
|
198 |
+
?>
|
199 |
+
<fieldset>
|
200 |
+
<?php
|
201 |
+
|
202 |
+
foreach($module_setting['options'] as $option_value => $option_title)
|
203 |
+
{
|
204 |
+
?><label><input type="radio" class="<?php echo $class ?>" <?php checked($value, $option_value) ?> value="<?php echo $option_value ?>" name="<?php echo $module_setting['id'] ?>"> <span><?php echo $option_title ?></span></label><?php
|
205 |
+
}
|
206 |
+
|
207 |
+
?>
|
208 |
+
</fieldset>
|
209 |
+
<?php
|
210 |
+
|
211 |
+
break;
|
212 |
+
}
|
213 |
+
|
214 |
+
?>
|
215 |
+
</td>
|
216 |
+
</tr>
|
217 |
+
</tbody>
|
218 |
+
</table>
|
219 |
+
</div>
|
220 |
+
|
221 |
+
<?php
|
222 |
+
|
223 |
+
}
|
224 |
+
|
225 |
+
|
226 |
+
function _generate_interface_tabs()
|
227 |
+
{
|
228 |
+
|
229 |
+
?>
|
230 |
+
<h2 class="nav-tab-wrapper">
|
231 |
+
<?php
|
232 |
+
|
233 |
+
//output all module components as tabs
|
234 |
+
foreach($this->module->components as $module_component)
|
235 |
+
{
|
236 |
+
if( ! $module_component->title)
|
237 |
+
continue;
|
238 |
+
|
239 |
+
$class = '';
|
240 |
+
if($module_component->id == $this->tab_slug)
|
241 |
+
$class = 'nav-tab-active';
|
242 |
+
|
243 |
+
?>
|
244 |
+
<a href="<?php echo admin_url( 'admin.php?page=' . $this->screen_slug . '&component=' . $module_component->id); ?>" class="nav-tab <?php echo $class ?>"><?php echo $module_component->title ?></a>
|
245 |
+
<?php
|
246 |
+
}
|
247 |
+
|
248 |
+
?>
|
249 |
+
</h2>
|
250 |
+
|
251 |
+
<?php
|
252 |
+
|
253 |
+
}
|
254 |
}
|
255 |
|
256 |
|
include/functions.class.php
CHANGED
@@ -87,14 +87,31 @@
|
|
87 |
if(empty($screen_slug))
|
88 |
return FALSE;
|
89 |
|
|
|
|
|
90 |
$module = $this->get_module_by_slug($screen_slug);
|
91 |
if(!is_object($module))
|
92 |
return FALSE;
|
93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
global $wph;
|
95 |
|
96 |
//proces the fields
|
97 |
-
$module_settings = $this->filter_settings( $module->get_module_settings() );
|
98 |
|
99 |
foreach($module_settings as $module_setting)
|
100 |
{
|
@@ -119,7 +136,7 @@
|
|
119 |
$this->update_settings($wph->settings);
|
120 |
|
121 |
//trigger the settings changed action
|
122 |
-
do_action('wph/settings_changed');
|
123 |
|
124 |
//redirect
|
125 |
$new_admin_url = $this->get_module_item_setting('admin_url' , 'admin');
|
@@ -128,6 +145,9 @@
|
|
128 |
else
|
129 |
$new_location = trailingslashit( site_url() ) . "wp-admin/admin.php?page=" . $screen_slug;
|
130 |
|
|
|
|
|
|
|
131 |
$new_location .= '&settings_updated=true';
|
132 |
|
133 |
wp_redirect($new_location);
|
@@ -159,7 +179,10 @@
|
|
159 |
return $found_module;
|
160 |
}
|
161 |
|
162 |
-
|
|
|
|
|
|
|
163 |
function is_permalink_enabled()
|
164 |
{
|
165 |
|
@@ -172,7 +195,11 @@
|
|
172 |
|
173 |
}
|
174 |
|
175 |
-
|
|
|
|
|
|
|
|
|
176 |
function is_theme_customize()
|
177 |
{
|
178 |
|
@@ -899,6 +926,119 @@
|
|
899 |
}
|
900 |
}
|
901 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
902 |
}
|
903 |
|
904 |
?>
|
87 |
if(empty($screen_slug))
|
88 |
return FALSE;
|
89 |
|
90 |
+
$tab_slug = isset($_GET['component']) ? $_GET['component'] : FALSE;
|
91 |
+
|
92 |
$module = $this->get_module_by_slug($screen_slug);
|
93 |
if(!is_object($module))
|
94 |
return FALSE;
|
95 |
|
96 |
+
//if no tag slug check if module use tabs and use the very first one
|
97 |
+
if(empty($tab_slug) && $module->use_tabs === TRUE)
|
98 |
+
{
|
99 |
+
//get the first component
|
100 |
+
foreach($module->components as $module_component)
|
101 |
+
{
|
102 |
+
if( ! $module_component->title)
|
103 |
+
continue;
|
104 |
+
|
105 |
+
$tab_slug = $module_component->id;
|
106 |
+
break;
|
107 |
+
}
|
108 |
+
|
109 |
+
}
|
110 |
+
|
111 |
global $wph;
|
112 |
|
113 |
//proces the fields
|
114 |
+
$module_settings = $this->filter_settings( $module->get_module_settings($tab_slug) );
|
115 |
|
116 |
foreach($module_settings as $module_setting)
|
117 |
{
|
136 |
$this->update_settings($wph->settings);
|
137 |
|
138 |
//trigger the settings changed action
|
139 |
+
do_action('wph/settings_changed', $screen_slug, $tab_slug);
|
140 |
|
141 |
//redirect
|
142 |
$new_admin_url = $this->get_module_item_setting('admin_url' , 'admin');
|
145 |
else
|
146 |
$new_location = trailingslashit( site_url() ) . "wp-admin/admin.php?page=" . $screen_slug;
|
147 |
|
148 |
+
if($tab_slug !== FALSE)
|
149 |
+
$new_location .= '&component=' . $tab_slug;
|
150 |
+
|
151 |
$new_location .= '&settings_updated=true';
|
152 |
|
153 |
wp_redirect($new_location);
|
179 |
return $found_module;
|
180 |
}
|
181 |
|
182 |
+
/**
|
183 |
+
* Used on early access when WP_Rewrite is not available
|
184 |
+
*
|
185 |
+
*/
|
186 |
function is_permalink_enabled()
|
187 |
{
|
188 |
|
195 |
|
196 |
}
|
197 |
|
198 |
+
/**
|
199 |
+
*
|
200 |
+
* Check if theme is is customize mode
|
201 |
+
*
|
202 |
+
*/
|
203 |
function is_theme_customize()
|
204 |
{
|
205 |
|
926 |
}
|
927 |
}
|
928 |
|
929 |
+
|
930 |
+
/**
|
931 |
+
* Check the plugins directory and retrieve all plugin files with plugin data.
|
932 |
+
*
|
933 |
+
* WordPress only supports plugin files in the base plugins directory
|
934 |
+
* (wp-content/plugins) and in one directory above the plugins directory
|
935 |
+
* (wp-content/plugins/my-plugin). The file it looks for has the plugin data
|
936 |
+
* and must be found in those two locations. It is recommended to keep your
|
937 |
+
* plugin files in their own directories.
|
938 |
+
*
|
939 |
+
* The file with the plugin data is the file that will be included and therefore
|
940 |
+
* needs to have the main execution for the plugin. This does not mean
|
941 |
+
* everything must be contained in the file and it is recommended that the file
|
942 |
+
* be split for maintainability. Keep everything in one file for extreme
|
943 |
+
* optimization purposes.
|
944 |
+
*
|
945 |
+
* @since 1.5.0
|
946 |
+
*
|
947 |
+
* @param string $plugin_folder Optional. Relative path to single plugin folder.
|
948 |
+
* @return array Key is the plugin file path and the value is an array of the plugin data.
|
949 |
+
*/
|
950 |
+
function get_plugins($plugin_folder = '')
|
951 |
+
{
|
952 |
+
|
953 |
+
$wp_plugins = array ();
|
954 |
+
$plugin_root = WP_PLUGIN_DIR;
|
955 |
+
if ( !empty($plugin_folder) )
|
956 |
+
$plugin_root .= $plugin_folder;
|
957 |
+
|
958 |
+
// Files in wp-content/plugins directory
|
959 |
+
$plugins_dir = @ opendir( $plugin_root);
|
960 |
+
$plugin_files = array();
|
961 |
+
if ( $plugins_dir ) {
|
962 |
+
while (($file = readdir( $plugins_dir ) ) !== false ) {
|
963 |
+
if ( substr($file, 0, 1) == '.' )
|
964 |
+
continue;
|
965 |
+
if ( is_dir( $plugin_root.'/'.$file ) ) {
|
966 |
+
$plugins_subdir = @ opendir( $plugin_root.'/'.$file );
|
967 |
+
if ( $plugins_subdir ) {
|
968 |
+
while (($subfile = readdir( $plugins_subdir ) ) !== false ) {
|
969 |
+
if ( substr($subfile, 0, 1) == '.' )
|
970 |
+
continue;
|
971 |
+
if ( substr($subfile, -4) == '.php' )
|
972 |
+
$plugin_files[] = "$file/$subfile";
|
973 |
+
}
|
974 |
+
closedir( $plugins_subdir );
|
975 |
+
}
|
976 |
+
} else {
|
977 |
+
if ( substr($file, -4) == '.php' )
|
978 |
+
$plugin_files[] = $file;
|
979 |
+
}
|
980 |
+
}
|
981 |
+
closedir( $plugins_dir );
|
982 |
+
}
|
983 |
+
|
984 |
+
if ( empty($plugin_files) )
|
985 |
+
return $wp_plugins;
|
986 |
+
|
987 |
+
foreach ( $plugin_files as $plugin_file ) {
|
988 |
+
if ( !is_readable( "$plugin_root/$plugin_file" ) )
|
989 |
+
continue;
|
990 |
+
|
991 |
+
$plugin_data = $this->get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached.
|
992 |
+
|
993 |
+
if ( empty ( $plugin_data['Name'] ) )
|
994 |
+
continue;
|
995 |
+
|
996 |
+
$wp_plugins[plugin_basename( $plugin_file )] = $plugin_data;
|
997 |
+
}
|
998 |
+
|
999 |
+
return $wp_plugins;
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
|
1003 |
+
function get_plugin_data( $plugin_file, $markup = true, $translate = true )
|
1004 |
+
{
|
1005 |
+
|
1006 |
+
$default_headers = array(
|
1007 |
+
'Name' => 'Plugin Name',
|
1008 |
+
'PluginURI' => 'Plugin URI',
|
1009 |
+
'Version' => 'Version',
|
1010 |
+
'Description' => 'Description',
|
1011 |
+
'Author' => 'Author',
|
1012 |
+
'AuthorURI' => 'Author URI',
|
1013 |
+
'TextDomain' => 'Text Domain',
|
1014 |
+
'DomainPath' => 'Domain Path',
|
1015 |
+
'Network' => 'Network',
|
1016 |
+
// Site Wide Only is deprecated in favor of Network.
|
1017 |
+
'_sitewide' => 'Site Wide Only',
|
1018 |
+
);
|
1019 |
+
|
1020 |
+
$plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' );
|
1021 |
+
|
1022 |
+
// Site Wide Only is the old header for Network
|
1023 |
+
if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) {
|
1024 |
+
/* translators: 1: Site Wide Only: true, 2: Network: true */
|
1025 |
+
_deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), '<code>Site Wide Only: true</code>', '<code>Network: true</code>' ) );
|
1026 |
+
$plugin_data['Network'] = $plugin_data['_sitewide'];
|
1027 |
+
}
|
1028 |
+
$plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
|
1029 |
+
unset( $plugin_data['_sitewide'] );
|
1030 |
+
|
1031 |
+
if ( $markup || $translate ) {
|
1032 |
+
$plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );
|
1033 |
+
} else {
|
1034 |
+
$plugin_data['Title'] = $plugin_data['Name'];
|
1035 |
+
$plugin_data['AuthorName'] = $plugin_data['Author'];
|
1036 |
+
}
|
1037 |
+
|
1038 |
+
return $plugin_data;
|
1039 |
+
}
|
1040 |
+
|
1041 |
+
|
1042 |
}
|
1043 |
|
1044 |
?>
|
include/module.class.php
CHANGED
@@ -7,9 +7,13 @@
|
|
7 |
|
8 |
var $functions;
|
9 |
var $wph;
|
|
|
|
|
10 |
|
11 |
function __construct()
|
12 |
{
|
|
|
|
|
13 |
$this->functions = new WPH_functions();
|
14 |
|
15 |
global $wph;
|
@@ -28,18 +32,30 @@
|
|
28 |
|
29 |
}
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
/**
|
33 |
* Return module components settings
|
34 |
*
|
35 |
*/
|
36 |
-
function get_module_settings()
|
37 |
{
|
38 |
|
39 |
$module_settings = array();
|
40 |
|
41 |
foreach($this->components as $module_component)
|
42 |
{
|
|
|
|
|
|
|
43 |
if(count($module_settings) > 0)
|
44 |
{
|
45 |
//add a split for interface
|
7 |
|
8 |
var $functions;
|
9 |
var $wph;
|
10 |
+
|
11 |
+
var $use_tabs;
|
12 |
|
13 |
function __construct()
|
14 |
{
|
15 |
+
$this->use_tabs = $this->use_tabs();
|
16 |
+
|
17 |
$this->functions = new WPH_functions();
|
18 |
|
19 |
global $wph;
|
32 |
|
33 |
}
|
34 |
|
35 |
+
/**
|
36 |
+
* Indicate if this module use a tabs to output included components
|
37 |
+
*
|
38 |
+
*/
|
39 |
+
function use_tabs()
|
40 |
+
{
|
41 |
+
|
42 |
+
return FALSE;
|
43 |
+
}
|
44 |
|
45 |
/**
|
46 |
* Return module components settings
|
47 |
*
|
48 |
*/
|
49 |
+
function get_module_settings($module_id = FALSE)
|
50 |
{
|
51 |
|
52 |
$module_settings = array();
|
53 |
|
54 |
foreach($this->components as $module_component)
|
55 |
{
|
56 |
+
if(!empty($module_id) && $module_component->id !== FALSE && $module_component->id != $module_id)
|
57 |
+
continue;
|
58 |
+
|
59 |
if(count($module_settings) > 0)
|
60 |
{
|
61 |
//add a split for interface
|
include/module.component.class.php
CHANGED
@@ -5,15 +5,35 @@
|
|
5 |
{
|
6 |
var $wph;
|
7 |
var $module_settings;
|
|
|
|
|
8 |
|
9 |
function __construct()
|
10 |
{
|
|
|
|
|
|
|
11 |
global $wph;
|
12 |
|
13 |
$this->wph = $wph;
|
14 |
|
15 |
$this->module_settings = $this->get_module_settings();
|
16 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
|
19 |
function get_module_settings()
|
5 |
{
|
6 |
var $wph;
|
7 |
var $module_settings;
|
8 |
+
|
9 |
+
var $title;
|
10 |
|
11 |
function __construct()
|
12 |
{
|
13 |
+
$this->id = $this->get_component_id();
|
14 |
+
$this->title = $this->get_component_title();
|
15 |
+
|
16 |
global $wph;
|
17 |
|
18 |
$this->wph = $wph;
|
19 |
|
20 |
$this->module_settings = $this->get_module_settings();
|
21 |
}
|
22 |
+
|
23 |
+
function get_component_id()
|
24 |
+
{
|
25 |
+
if($this->get_component_title() === FALSE)
|
26 |
+
return FALSE;
|
27 |
+
|
28 |
+
return sanitize_title($this->get_component_title());
|
29 |
+
|
30 |
+
}
|
31 |
+
|
32 |
+
function get_component_title()
|
33 |
+
{
|
34 |
+
|
35 |
+
return FALSE;
|
36 |
+
}
|
37 |
|
38 |
|
39 |
function get_module_settings()
|
include/wph.class.php
CHANGED
@@ -86,7 +86,8 @@
|
|
86 |
|
87 |
$this->is_initialised = TRUE;
|
88 |
}
|
89 |
-
|
|
|
90 |
function _load_modules()
|
91 |
{
|
92 |
$module_files = glob(WPH_PATH . "/modules/module-*.php");
|
@@ -241,7 +242,7 @@
|
|
241 |
//replace the urls
|
242 |
$buffer = $this->functions->text_urls_replacement($buffer, $this->urls_replacement);
|
243 |
|
244 |
-
$buffer = apply_filters( 'wph/ob_start_callback', $buffer );
|
245 |
|
246 |
return $buffer;
|
247 |
|
@@ -277,7 +278,7 @@
|
|
277 |
|
278 |
|
279 |
|
280 |
-
|
281 |
|
282 |
return;
|
283 |
}
|
@@ -373,7 +374,12 @@
|
|
373 |
$_callback = '_callback_saved_' . $field_id;
|
374 |
|
375 |
if (method_exists($_class_instance, $_callback) && is_callable(array($_class_instance, $_callback)))
|
376 |
-
|
|
|
|
|
|
|
|
|
|
|
377 |
|
378 |
}
|
379 |
}
|
@@ -397,13 +403,13 @@
|
|
397 |
|
398 |
if(count($_htaccess_data) > 0)
|
399 |
{
|
400 |
-
$new_rules = "RewriteRule ^index\.php$ - [L]";
|
401 |
foreach($_htaccess_data as $_htaccess_data_line)
|
402 |
{
|
403 |
$new_rules .= "\n" . $_htaccess_data_line;
|
404 |
}
|
405 |
|
406 |
-
$new_rules .= "\n";
|
407 |
|
408 |
$new_rules = apply_filters('wp-hide/mod_rewrite_rules', $new_rules);
|
409 |
|
@@ -506,6 +512,9 @@
|
|
506 |
function permalink_change_redirect()
|
507 |
{
|
508 |
$screen = get_current_screen();
|
|
|
|
|
|
|
509 |
|
510 |
if($screen->base != "options-permalink" || !isset($_GET['settings-updated']))
|
511 |
return;
|
86 |
|
87 |
$this->is_initialised = TRUE;
|
88 |
}
|
89 |
+
|
90 |
+
|
91 |
function _load_modules()
|
92 |
{
|
93 |
$module_files = glob(WPH_PATH . "/modules/module-*.php");
|
242 |
//replace the urls
|
243 |
$buffer = $this->functions->text_urls_replacement($buffer, $this->urls_replacement);
|
244 |
|
245 |
+
$buffer = apply_filters( 'wph/ob_start_callback', $buffer );
|
246 |
|
247 |
return $buffer;
|
248 |
|
278 |
|
279 |
|
280 |
|
281 |
+
//$active_plugins = get_site_option( 'active_sitewide_plugins', array() );
|
282 |
|
283 |
return;
|
284 |
}
|
374 |
$_callback = '_callback_saved_' . $field_id;
|
375 |
|
376 |
if (method_exists($_class_instance, $_callback) && is_callable(array($_class_instance, $_callback)))
|
377 |
+
{
|
378 |
+
$module_mod_rewrite_rules = call_user_func(array($_class_instance, $_callback), $saved_field_value);
|
379 |
+
$module_mod_rewrite_rules = apply_filters('wp-hide/module_mod_rewrite_rules', $module_mod_rewrite_rules, $_class_instance);
|
380 |
+
|
381 |
+
$processing_data[] = $module_mod_rewrite_rules;
|
382 |
+
}
|
383 |
|
384 |
}
|
385 |
}
|
403 |
|
404 |
if(count($_htaccess_data) > 0)
|
405 |
{
|
406 |
+
$new_rules = "RewriteRule ^index\.php$ - [L] \n\n#START - WP Hide & Security Enhancer";
|
407 |
foreach($_htaccess_data as $_htaccess_data_line)
|
408 |
{
|
409 |
$new_rules .= "\n" . $_htaccess_data_line;
|
410 |
}
|
411 |
|
412 |
+
$new_rules .= "\n#END - WP Hide & Security Enhancer\n";
|
413 |
|
414 |
$new_rules = apply_filters('wp-hide/mod_rewrite_rules', $new_rules);
|
415 |
|
512 |
function permalink_change_redirect()
|
513 |
{
|
514 |
$screen = get_current_screen();
|
515 |
+
|
516 |
+
if(empty($screen))
|
517 |
+
return;
|
518 |
|
519 |
if($screen->base != "options-permalink" || !isset($_GET['settings-updated']))
|
520 |
return;
|
modules/components/admin-admin_url.php
CHANGED
@@ -8,8 +8,11 @@
|
|
8 |
$this->module_settings[] = array(
|
9 |
'id' => 'admin_url',
|
10 |
'label' => 'New Admin Url',
|
11 |
-
'description' =>
|
12 |
-
|
|
|
|
|
|
|
13 |
'input_type' => 'text',
|
14 |
|
15 |
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
@@ -21,9 +24,7 @@
|
|
21 |
'id' => 'block_default_admin_url',
|
22 |
'label' => 'Block default Admin Url',
|
23 |
'description' => array(
|
24 |
-
__('Block default admin url and files from being accesible.', 'wp-hide-security-enhancer')
|
25 |
-
'<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('Write down your new admin url, or if lost, will not be able to log-in.', 'wp-hide-security-enhancer') . " " . __('An e-mail will be sent to', 'wp-hide-security-enhancer') . " " . get_option('admin_email') . " " . __('with the new Login URL', 'wp-hide-security-enhancer') . '</span></div>',
|
26 |
-
'<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('If unable to access the login / admin section anymore, use the Recovery Link which reset links to default: ', 'wp-hide-security-enhancer') . '<br /><b class="pointer">' . site_url() . '?wph-recovery='. $this->wph->functions->get_recovery_code() .'</b></div>'
|
27 |
),
|
28 |
'input_type' => 'radio',
|
29 |
'options' => array(
|
8 |
$this->module_settings[] = array(
|
9 |
'id' => 'admin_url',
|
10 |
'label' => 'New Admin Url',
|
11 |
+
'description' => array(
|
12 |
+
__('Create a new admin url instead default /wp-admin and /login.', 'wp-hide-security-enhancer'),
|
13 |
+
'<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('Write down your new admin url, or if lost, will not be able to log-in.', 'wp-hide-security-enhancer') . " " . __('An e-mail will be sent to', 'wp-hide-security-enhancer') . " " . get_option('admin_email') . " " . __('with the new Login URL', 'wp-hide-security-enhancer') . '</span></div>',
|
14 |
+
'<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('If unable to access the login / admin section anymore, use the Recovery Link which reset links to default: ', 'wp-hide-security-enhancer') . '<br /><b class="pointer">' . site_url() . '?wph-recovery='. $this->wph->functions->get_recovery_code() .'</b></div>'
|
15 |
+
),
|
16 |
'input_type' => 'text',
|
17 |
|
18 |
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
24 |
'id' => 'block_default_admin_url',
|
25 |
'label' => 'Block default Admin Url',
|
26 |
'description' => array(
|
27 |
+
__('Block default admin url and files from being accesible.', 'wp-hide-security-enhancer')
|
|
|
|
|
28 |
),
|
29 |
'input_type' => 'radio',
|
30 |
'options' => array(
|
modules/components/general-meta.php
CHANGED
@@ -201,11 +201,21 @@
|
|
201 |
if(empty($saved_field_data) || $saved_field_data == 'no')
|
202 |
return FALSE;
|
203 |
|
204 |
-
remove_action('wp_head', 'rel_canonical');
|
|
|
|
|
|
|
205 |
|
206 |
//make sure is removed if placed by other plugins
|
207 |
add_filter('wph/ob_start_callback', array($this, 'remove_canonical_tag'));
|
208 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
|
210 |
|
211 |
function remove_canonical_tag($html)
|
201 |
if(empty($saved_field_data) || $saved_field_data == 'no')
|
202 |
return FALSE;
|
203 |
|
204 |
+
remove_action( 'wp_head', 'rel_canonical');
|
205 |
+
|
206 |
+
//use the earlier possible action to remove the admin canonical url
|
207 |
+
add_action( 'auth_redirect', array(&$this, 'remove_wp_admin_canonical_url'));
|
208 |
|
209 |
//make sure is removed if placed by other plugins
|
210 |
add_filter('wph/ob_start_callback', array($this, 'remove_canonical_tag'));
|
211 |
}
|
212 |
+
|
213 |
+
function remove_wp_admin_canonical_url()
|
214 |
+
{
|
215 |
+
|
216 |
+
remove_action( 'admin_head', 'wp_admin_canonical_url' );
|
217 |
+
|
218 |
+
}
|
219 |
|
220 |
|
221 |
function remove_canonical_tag($html)
|
modules/components/rewrite-default.php
CHANGED
@@ -2,6 +2,12 @@
|
|
2 |
|
3 |
class WPH_module_rewrite_default extends WPH_module_component
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
function get_module_settings()
|
7 |
{
|
@@ -19,7 +25,8 @@
|
|
19 |
function _callback_saved_rewrite_default($saved_field_data)
|
20 |
{
|
21 |
$processing_response = array();
|
22 |
-
|
|
|
23 |
$processing_response['htaccess'] = "\nRewriteCond %{REQUEST_URI} /+[^\.]+$\n"
|
24 |
. "RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]";
|
25 |
|
2 |
|
3 |
class WPH_module_rewrite_default extends WPH_module_component
|
4 |
{
|
5 |
+
|
6 |
+
function get_component_id()
|
7 |
+
{
|
8 |
+
return '_rewrite_default_';
|
9 |
+
|
10 |
+
}
|
11 |
|
12 |
function get_module_settings()
|
13 |
{
|
25 |
function _callback_saved_rewrite_default($saved_field_data)
|
26 |
{
|
27 |
$processing_response = array();
|
28 |
+
|
29 |
+
//redirect any link without a slash
|
30 |
$processing_response['htaccess'] = "\nRewriteCond %{REQUEST_URI} /+[^\.]+$\n"
|
31 |
. "RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]";
|
32 |
|
modules/components/rewrite-new_include_path.php
CHANGED
@@ -3,15 +3,20 @@
|
|
3 |
class WPH_module_rewrite_new_include_path extends WPH_module_component
|
4 |
{
|
5 |
|
|
|
|
|
|
|
|
|
|
|
6 |
function get_module_settings()
|
7 |
{
|
8 |
$this->module_settings[] = array(
|
9 |
'id' => 'new_include_path',
|
10 |
-
'label' => __('New
|
11 |
'description' => __('The default theme path is set to', 'wp-hide-security-enhancer') . ' <strong>wp-include</strong>
|
12 |
'. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
|
13 |
|
14 |
-
'value_description' => __('e.g.
|
15 |
'input_type' => 'text',
|
16 |
|
17 |
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
@@ -19,8 +24,8 @@
|
|
19 |
);
|
20 |
$this->module_settings[] = array(
|
21 |
'id' => 'block_wpinclude_url',
|
22 |
-
'label' => 'Block wp-
|
23 |
-
'description' => 'Block wp-
|
24 |
|
25 |
'input_type' => 'radio',
|
26 |
'options' => array(
|
3 |
class WPH_module_rewrite_new_include_path extends WPH_module_component
|
4 |
{
|
5 |
|
6 |
+
function get_component_title()
|
7 |
+
{
|
8 |
+
return "WP includes";
|
9 |
+
}
|
10 |
+
|
11 |
function get_module_settings()
|
12 |
{
|
13 |
$this->module_settings[] = array(
|
14 |
'id' => 'new_include_path',
|
15 |
+
'label' => __('New Includes Path', 'wp-hide-security-enhancer'),
|
16 |
'description' => __('The default theme path is set to', 'wp-hide-security-enhancer') . ' <strong>wp-include</strong>
|
17 |
'. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
|
18 |
|
19 |
+
'value_description' => __('e.g. my_includes', 'wp-hide-security-enhancer'),
|
20 |
'input_type' => 'text',
|
21 |
|
22 |
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
24 |
);
|
25 |
$this->module_settings[] = array(
|
26 |
'id' => 'block_wpinclude_url',
|
27 |
+
'label' => 'Block wp-includes URL',
|
28 |
+
'description' => 'Block wp-includes files from being accesible through default urls. <br />Apply only if <b>New Includes Path</b> is not empty. It block only for non loged-in users.',
|
29 |
|
30 |
'input_type' => 'radio',
|
31 |
'options' => array(
|
modules/components/rewrite-new_plugin_path.php
CHANGED
@@ -2,16 +2,21 @@
|
|
2 |
|
3 |
class WPH_module_rewrite_new_plugin_path extends WPH_module_component
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
function get_module_settings()
|
7 |
{
|
8 |
$this->module_settings[] = array(
|
9 |
'id' => 'new_plugin_path',
|
10 |
-
'label' => __('New
|
11 |
-
'description' => __('The default
|
12 |
'. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
|
13 |
|
14 |
-
'value_description' => 'e.g.
|
15 |
'input_type' => 'text',
|
16 |
|
17 |
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
@@ -34,6 +39,32 @@
|
|
34 |
'processing_order' => 30
|
35 |
|
36 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
return $this->module_settings;
|
39 |
}
|
@@ -45,11 +76,62 @@
|
|
45 |
if(empty($saved_field_data))
|
46 |
return FALSE;
|
47 |
|
|
|
|
|
48 |
//add default plugin path replacement
|
49 |
$new_plugin_path = $this->wph->functions->untrailingslashit_all( $this->wph->functions->get_module_item_setting('new_plugin_path') );
|
50 |
$new_plugin_path = trailingslashit( site_url() ) . untrailingslashit( $new_plugin_path );
|
51 |
$this->wph->urls_replacement[WP_PLUGIN_URL] = $new_plugin_path;
|
52 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
function _callback_saved_new_plugin_path($saved_field_data)
|
55 |
{
|
@@ -66,7 +148,35 @@
|
|
66 |
$path = trailingslashit($this->wph->default_variables['wordpress_directory']);
|
67 |
$path .= trailingslashit( $saved_field_data );
|
68 |
|
69 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
return $processing_response;
|
72 |
}
|
2 |
|
3 |
class WPH_module_rewrite_new_plugin_path extends WPH_module_component
|
4 |
{
|
5 |
+
|
6 |
+
function get_component_title()
|
7 |
+
{
|
8 |
+
return "Plugins";
|
9 |
+
}
|
10 |
|
11 |
function get_module_settings()
|
12 |
{
|
13 |
$this->module_settings[] = array(
|
14 |
'id' => 'new_plugin_path',
|
15 |
+
'label' => __('New Plugins Path', 'wp-hide-security-enhancer'),
|
16 |
+
'description' => __('The default plugins path is set to', 'wp-hide-security-enhancer') . ' <strong>'. str_replace(get_bloginfo('wpurl'), '' ,$this->wph->default_variables['plugins_url']) .'</strong>
|
17 |
'. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
|
18 |
|
19 |
+
'value_description' => 'e.g. my_plugins',
|
20 |
'input_type' => 'text',
|
21 |
|
22 |
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
39 |
'processing_order' => 30
|
40 |
|
41 |
);
|
42 |
+
|
43 |
+
$all_plugins = $this->wph->functions->get_plugins();
|
44 |
+
|
45 |
+
//get active plugins
|
46 |
+
$active_plugins = (array) get_option( 'active_plugins', array() );
|
47 |
+
foreach($active_plugins as $active_plugin)
|
48 |
+
{
|
49 |
+
//exclude this plugin
|
50 |
+
if('wp-hide-security-enhancer/wp-hide.php' == $active_plugin)
|
51 |
+
continue;
|
52 |
+
|
53 |
+
$plugin_slug = sanitize_title($active_plugin);
|
54 |
+
|
55 |
+
$pluding_data = $all_plugins[$active_plugin];
|
56 |
+
|
57 |
+
$this->module_settings[] = array(
|
58 |
+
'id' => 'new_plugin_path_' . $plugin_slug,
|
59 |
+
'label' => __('New Path for', 'wp-hide-security-enhancer') . " <i>" . $pluding_data['Name'] ."</i> ". __('plugin', 'wp-hide-security-enhancer'),
|
60 |
+
'description' => __('This setting overwrite the', 'wp-hide-security-enhancer') . ' ' . __('New Plugin Path', 'wp-hide-security-enhancer') . ' ' . __('setting for this plugin, if set.', 'wp-hide-security-enhancer'),
|
61 |
+
'value_description' => 'e.g. my_plugins/module',
|
62 |
+
'input_type' => 'text',
|
63 |
+
|
64 |
+
'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
|
65 |
+
);
|
66 |
+
|
67 |
+
}
|
68 |
|
69 |
return $this->module_settings;
|
70 |
}
|
76 |
if(empty($saved_field_data))
|
77 |
return FALSE;
|
78 |
|
79 |
+
add_filter('plugins_url', array( $this, 'plugins_url' ), 10, 3);
|
80 |
+
|
81 |
//add default plugin path replacement
|
82 |
$new_plugin_path = $this->wph->functions->untrailingslashit_all( $this->wph->functions->get_module_item_setting('new_plugin_path') );
|
83 |
$new_plugin_path = trailingslashit( site_url() ) . untrailingslashit( $new_plugin_path );
|
84 |
$this->wph->urls_replacement[WP_PLUGIN_URL] = $new_plugin_path;
|
85 |
}
|
86 |
+
|
87 |
+
function plugins_url($url, $path, $plugin)
|
88 |
+
{
|
89 |
+
|
90 |
+
if(empty($plugin))
|
91 |
+
return $url;
|
92 |
+
|
93 |
+
$strip_url = str_replace(WP_PLUGIN_URL, "", $url);
|
94 |
+
$strip_url = str_replace($path, "", $strip_url);
|
95 |
+
$strip_url = $this->wph->functions->untrailingslashit_all( $strip_url );
|
96 |
+
|
97 |
+
$new_url = $url;
|
98 |
+
|
99 |
+
//get active plugins
|
100 |
+
$active_plugins = (array) get_option( 'active_plugins', array() );
|
101 |
+
foreach($active_plugins as $active_plugin)
|
102 |
+
{
|
103 |
+
$active_plugin_split = explode('/', $active_plugin);
|
104 |
+
$active_plugin_directory = $active_plugin_split[0];
|
105 |
+
|
106 |
+
if($active_plugin_directory != $strip_url)
|
107 |
+
continue;
|
108 |
+
|
109 |
+
$plugin_slug = sanitize_title($active_plugin);
|
110 |
+
$option_namespace = 'new_plugin_path_' . $plugin_slug;
|
111 |
+
|
112 |
+
//check if plugin have custom url
|
113 |
+
$plugin_custom_path = $this->wph->functions->get_module_item_setting($option_namespace);
|
114 |
+
if(empty($plugin_custom_path))
|
115 |
+
continue;
|
116 |
+
|
117 |
+
//add custom path
|
118 |
+
$new_url = trailingslashit( site_url() ) . $plugin_custom_path;
|
119 |
+
if(!empty($path))
|
120 |
+
$new_url = trailingslashit( $new_url ) . $path;
|
121 |
+
|
122 |
+
//add replacement
|
123 |
+
$new_plugin_path = $this->wph->functions->untrailingslashit_all( $this->wph->functions->get_module_item_setting('new_plugin_path') );
|
124 |
+
$replace_url = trailingslashit( site_url() ) . trailingslashit( $new_plugin_path ) . $active_plugin_directory;
|
125 |
+
$replacement_url = trailingslashit( site_url() ) . $plugin_custom_path;
|
126 |
+
$this->wph->urls_replacement[$replace_url] = $replacement_url;
|
127 |
+
|
128 |
+
break;
|
129 |
+
}
|
130 |
+
|
131 |
+
return $new_url;
|
132 |
+
|
133 |
+
|
134 |
+
}
|
135 |
|
136 |
function _callback_saved_new_plugin_path($saved_field_data)
|
137 |
{
|
148 |
$path = trailingslashit($this->wph->default_variables['wordpress_directory']);
|
149 |
$path .= trailingslashit( $saved_field_data );
|
150 |
|
151 |
+
$htaccess = "\nRewriteRule ^" . trailingslashit( $path ) . '(.*) '. $plugin_path .'$1 [L,QSA]';
|
152 |
+
|
153 |
+
//add custom rewrite for plugins
|
154 |
+
//get active plugins
|
155 |
+
$active_plugins = (array) get_option( 'active_plugins', array() );
|
156 |
+
foreach($active_plugins as $active_plugin)
|
157 |
+
{
|
158 |
+
$active_plugin_split = explode('/', $active_plugin);
|
159 |
+
$active_plugin_directory = $active_plugin_split[0];
|
160 |
+
|
161 |
+
$plugin_slug = sanitize_title($active_plugin);
|
162 |
+
$option_namespace = 'new_plugin_path_' . $plugin_slug;
|
163 |
+
|
164 |
+
//check if plugin have custom url
|
165 |
+
$plugin_custom_path = $this->wph->functions->get_module_item_setting($option_namespace);
|
166 |
+
if(empty($plugin_custom_path))
|
167 |
+
continue;
|
168 |
+
|
169 |
+
//add custom path
|
170 |
+
$new_url = trailingslashit( site_url() ) . $plugin_custom_path;
|
171 |
+
if(!empty($path))
|
172 |
+
$new_url = trailingslashit( $new_url ) . $path;
|
173 |
+
|
174 |
+
|
175 |
+
$htaccess .= "\nRewriteRule ^" . trailingslashit( $plugin_custom_path ) . '(.*) '. trailingslashit($plugin_path) . trailingslashit($active_plugin_directory) .'$1 [L,QSA]';
|
176 |
+
|
177 |
+
}
|
178 |
+
|
179 |
+
$processing_response['htaccess'] = $htaccess;
|
180 |
|
181 |
return $processing_response;
|
182 |
}
|
modules/components/rewrite-new_theme_path.php
CHANGED
@@ -2,7 +2,13 @@
|
|
2 |
|
3 |
class WPH_module_rewrite_new_theme_path extends WPH_module_component
|
4 |
{
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
function get_module_settings()
|
7 |
{
|
8 |
$this->module_settings[] = array(
|
2 |
|
3 |
class WPH_module_rewrite_new_theme_path extends WPH_module_component
|
4 |
{
|
5 |
+
|
6 |
+
function get_component_title()
|
7 |
+
{
|
8 |
+
return "Theme";
|
9 |
+
}
|
10 |
+
|
11 |
+
|
12 |
function get_module_settings()
|
13 |
{
|
14 |
$this->module_settings[] = array(
|
modules/components/rewrite-new_upload_path.php
CHANGED
@@ -2,13 +2,18 @@
|
|
2 |
|
3 |
class WPH_module_rewrite_new_upload_path extends WPH_module_component
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
function get_module_settings()
|
7 |
{
|
8 |
$this->module_settings[] = array(
|
9 |
'id' => 'new_upload_path',
|
10 |
-
'label' => __('New
|
11 |
-
'description' => __('The default
|
12 |
'. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
|
13 |
|
14 |
'value_description' => __('e.g. my_uploads', 'wp-hide-security-enhancer'),
|
@@ -20,7 +25,7 @@
|
|
20 |
|
21 |
$this->module_settings[] = array(
|
22 |
'id' => 'block_upload_url',
|
23 |
-
'label' => __('Block
|
24 |
'description' => __('Block upload files from being accesible through default urls.', 'wp-hide-security-enhancer') . ' <br />'.__('If set to Yes, all new images inserted into posts will use the new Upload Url, as old url become blocked. Using the No, new images inesrted will use old url, which however are being updated on front side. This may be helpfull on plugin disable, so image urls can be accessible as before.', 'wp-hide-security-enhancer').'<br />'. __('Apply only if', 'wp-hide-security-enhancer') .' <b>New Upload Path</b> '.__('is not empty.', 'wp-hide-security-enhancer'),
|
25 |
|
26 |
'input_type' => 'radio',
|
2 |
|
3 |
class WPH_module_rewrite_new_upload_path extends WPH_module_component
|
4 |
{
|
5 |
+
|
6 |
+
function get_component_title()
|
7 |
+
{
|
8 |
+
return "Uploads";
|
9 |
+
}
|
10 |
|
11 |
function get_module_settings()
|
12 |
{
|
13 |
$this->module_settings[] = array(
|
14 |
'id' => 'new_upload_path',
|
15 |
+
'label' => __('New Uploads Path', 'wp-hide-security-enhancer'),
|
16 |
+
'description' => __('The default uploads path is set to', 'wp-hide-security-enhancer') . ' <strong>'. str_replace(get_bloginfo('wpurl'), '' ,$this->wph->default_variables['upload_url']) .'</strong>
|
17 |
'. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
|
18 |
|
19 |
'value_description' => __('e.g. my_uploads', 'wp-hide-security-enhancer'),
|
25 |
|
26 |
$this->module_settings[] = array(
|
27 |
'id' => 'block_upload_url',
|
28 |
+
'label' => __('Block uploads URL', 'wp-hide-security-enhancer'),
|
29 |
'description' => __('Block upload files from being accesible through default urls.', 'wp-hide-security-enhancer') . ' <br />'.__('If set to Yes, all new images inserted into posts will use the new Upload Url, as old url become blocked. Using the No, new images inesrted will use old url, which however are being updated on front side. This may be helpfull on plugin disable, so image urls can be accessible as before.', 'wp-hide-security-enhancer').'<br />'. __('Apply only if', 'wp-hide-security-enhancer') .' <b>New Upload Path</b> '.__('is not empty.', 'wp-hide-security-enhancer'),
|
30 |
|
31 |
'input_type' => 'radio',
|
modules/components/rewrite-new_xml-rpc-path.php
CHANGED
@@ -2,7 +2,12 @@
|
|
2 |
|
3 |
class WPH_module_rewrite_new_xml_rpc_path extends WPH_module_component
|
4 |
{
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
6 |
function get_module_settings()
|
7 |
{
|
8 |
$this->module_settings[] = array(
|
2 |
|
3 |
class WPH_module_rewrite_new_xml_rpc_path extends WPH_module_component
|
4 |
{
|
5 |
+
|
6 |
+
function get_component_title()
|
7 |
+
{
|
8 |
+
return "XML-RPC";
|
9 |
+
}
|
10 |
+
|
11 |
function get_module_settings()
|
12 |
{
|
13 |
$this->module_settings[] = array(
|
modules/components/rewrite-wp_content_path.php
CHANGED
@@ -2,7 +2,11 @@
|
|
2 |
|
3 |
class WPH_module_rewrite_wp_content_path extends WPH_module_component
|
4 |
{
|
5 |
-
|
|
|
|
|
|
|
|
|
6 |
function get_module_settings()
|
7 |
{
|
8 |
$this->module_settings[] = array(
|
2 |
|
3 |
class WPH_module_rewrite_wp_content_path extends WPH_module_component
|
4 |
{
|
5 |
+
function get_component_title()
|
6 |
+
{
|
7 |
+
return "WP content";
|
8 |
+
}
|
9 |
+
|
10 |
function get_module_settings()
|
11 |
{
|
12 |
$this->module_settings[] = array(
|
modules/module-rewrite.php
CHANGED
@@ -35,6 +35,12 @@
|
|
35 |
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
function get_module_id()
|
39 |
{
|
40 |
return 'rewrite';
|
@@ -62,7 +68,7 @@
|
|
62 |
|
63 |
$interface_data['title'] = __('WP Hide & Security Enhancer', 'wp-hide-security-enhancer') . ' - ' . __('Rewrite', 'wp-hide-security-enhancer');
|
64 |
$interface_data['description'] = '';
|
65 |
-
$interface_data['handle_title'] = '
|
66 |
|
67 |
return $interface_data;
|
68 |
}
|
35 |
|
36 |
}
|
37 |
|
38 |
+
function use_tabs()
|
39 |
+
{
|
40 |
+
|
41 |
+
return TRUE;
|
42 |
+
}
|
43 |
+
|
44 |
function get_module_id()
|
45 |
{
|
46 |
return 'rewrite';
|
68 |
|
69 |
$interface_data['title'] = __('WP Hide & Security Enhancer', 'wp-hide-security-enhancer') . ' - ' . __('Rewrite', 'wp-hide-security-enhancer');
|
70 |
$interface_data['description'] = '';
|
71 |
+
$interface_data['handle_title'] = '';
|
72 |
|
73 |
return $interface_data;
|
74 |
}
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.nsp-code.com/donate.php
|
|
4 |
Tags: hide, security, improve security, hacking, wp hide, wordpress hide
|
5 |
Requires at least: 2.8
|
6 |
Tested up to: 4.4.2
|
7 |
-
Stable tag: 1.
|
8 |
|
9 |
Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
|
10 |
|
@@ -16,9 +16,11 @@ Being the best content management system, widely used, WordPress is susceptible
|
|
16 |
Statistics reveal that every day new vulnerabilities are discovered, many affecting hundreds of thousands of WordPress websites.
|
17 |
Over 99,9% of hacked WordPress websites are target of automated malware scripts, who search for certain WordPress fingerprints. This plugin hide or replace those traces, making the hacking boots attacks useless.
|
18 |
|
|
|
|
|
19 |
**Main plugin functionality:**
|
20 |
|
21 |
-
* Custom
|
22 |
* Block default admin Url
|
23 |
* Block any direct folder access to completely hide the structure
|
24 |
* Custom wp-login.php filename
|
@@ -27,12 +29,13 @@ Over 99,9% of hacked WordPress websites are target of automated malware scripts,
|
|
27 |
* Block XML-RPC API
|
28 |
* New XML-RPC path
|
29 |
* Adjustable theme url
|
30 |
-
* New child
|
31 |
* Change theme style file name
|
32 |
* Custom wp-include
|
33 |
* Block default wp-include paths
|
34 |
* Block defalt wp-content
|
35 |
-
* Custom plugins urls
|
|
|
36 |
* Block default plugins paths
|
37 |
* New upload url
|
38 |
* Block default upload urls
|
@@ -43,13 +46,20 @@ Over 99,9% of hacked WordPress websites are target of automated malware scripts,
|
|
43 |
* Remove wlwmanifest Meta
|
44 |
* Remove rsd_link Meta
|
45 |
* Remove wpemoji
|
|
|
46 |
and many more.
|
47 |
|
|
|
|
|
|
|
|
|
48 |
|
49 |
<br />Something is wrong with this plugin on your site? Just use the forum or get in touch with us at <a target="_blank" href="http://www.nsp-code.com">Contact</a> and we'll check it out.
|
50 |
|
51 |
<br />A website example can be found at <a target="_blank" href="http://nsp-code.com/demo/wp-hide/">http://nsp-code.com/demo/wp-hide/</a>
|
52 |
|
|
|
|
|
53 |
<br />
|
54 |
<br />This plugin is developed by <a target="_blank" href="http://www.nsp-code.com">Nsp-Code</a>
|
55 |
|
@@ -67,7 +77,7 @@ Feel free to contact us at electronice_delphi@yahoo.com
|
|
67 |
|
68 |
* First, stay calm. There will be no harm, guaranteed :)
|
69 |
* Go to admin and change some of plugin options to see which one cause the problem. Then report it to forum or get in touch with us to fix it.
|
70 |
-
* If you can't login to admin, use the Recovery Link which has been sent to your e-mail. This will reset to default
|
71 |
* If for some reason the site appear broken, you should back-up then replace the .htaccess file located on your WordPress root. Then remove the wp-hide-security-enhancer from your plugin directory.
|
72 |
* If still no luck, please get in touch with us at electronice_delphi@yahoo.com and we'll fix it for you in no time!
|
73 |
|
@@ -86,6 +96,13 @@ Please get in touch with us and we'll do our best to include it for a next versi
|
|
86 |
|
87 |
== Changelog ==
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
= 1.1.7 =
|
90 |
* Remove profile link meta tag within head.
|
91 |
* Remove canonical link meta tag within head
|
@@ -97,8 +114,6 @@ Please get in touch with us and we'll do our best to include it for a next versi
|
|
97 |
* PO translations update
|
98 |
* TinyMCE emojicons callback fix
|
99 |
|
100 |
-
|
101 |
-
|
102 |
= 1.1.2 =
|
103 |
* Add a custom url for login_url filter
|
104 |
* Better description and warning for wp-login.php change
|
@@ -108,7 +123,6 @@ Please get in touch with us and we'll do our best to include it for a next versi
|
|
108 |
* wp-content block when not logged-in
|
109 |
* readme update
|
110 |
|
111 |
-
|
112 |
= 1.1 =
|
113 |
* Po / Mo localisation files update
|
114 |
* Update class to process the further structure changes and current components fields name change.
|
4 |
Tags: hide, security, improve security, hacking, wp hide, wordpress hide
|
5 |
Requires at least: 2.8
|
6 |
Tested up to: 4.4.2
|
7 |
+
Stable tag: 1.2
|
8 |
|
9 |
Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
|
10 |
|
16 |
Statistics reveal that every day new vulnerabilities are discovered, many affecting hundreds of thousands of WordPress websites.
|
17 |
Over 99,9% of hacked WordPress websites are target of automated malware scripts, who search for certain WordPress fingerprints. This plugin hide or replace those traces, making the hacking boots attacks useless.
|
18 |
|
19 |
+
Works fine with custom WordPress directory structure.
|
20 |
+
|
21 |
**Main plugin functionality:**
|
22 |
|
23 |
+
* Custom Admin Url
|
24 |
* Block default admin Url
|
25 |
* Block any direct folder access to completely hide the structure
|
26 |
* Custom wp-login.php filename
|
29 |
* Block XML-RPC API
|
30 |
* New XML-RPC path
|
31 |
* Adjustable theme url
|
32 |
+
* New child Theme url
|
33 |
* Change theme style file name
|
34 |
* Custom wp-include
|
35 |
* Block default wp-include paths
|
36 |
* Block defalt wp-content
|
37 |
+
* Custom plugins urls
|
38 |
+
* Individual plugin url change
|
39 |
* Block default plugins paths
|
40 |
* New upload url
|
41 |
* Block default upload urls
|
46 |
* Remove wlwmanifest Meta
|
47 |
* Remove rsd_link Meta
|
48 |
* Remove wpemoji
|
49 |
+
|
50 |
and many more.
|
51 |
|
52 |
+
This plugin allow to change default Admin Url's from **wp-login.php** and **wp-admin** to something else. All original links return default theme 404 Not Found page, like nothing exists there. Beside the huge security advantage, this save lots of server processing time by reducing php code and MySQL usage since brute-force attacks trigger wrong urls.
|
53 |
+
|
54 |
+
**Important:** Compared to all other similar plugins which mainly use redirects, this plugin return a default theme 404 error page for all **block url** functionality, so is not reveal at all the link existence.
|
55 |
+
Since version 1.2 Change individual plugin urls which make them unrecognizable, for example change default WooCommerce plugin urls and dependencies from domain.com/wp-content/plugins/woocommerce/ to domain.com/ecommerce/cdn/ or anything customized.
|
56 |
|
57 |
<br />Something is wrong with this plugin on your site? Just use the forum or get in touch with us at <a target="_blank" href="http://www.nsp-code.com">Contact</a> and we'll check it out.
|
58 |
|
59 |
<br />A website example can be found at <a target="_blank" href="http://nsp-code.com/demo/wp-hide/">http://nsp-code.com/demo/wp-hide/</a>
|
60 |
|
61 |
+
<br />Plugin homepage at <a target="_blank" href="http://www.wp-hide.com/">WordPress Hide and Security Enhancer</a>
|
62 |
+
|
63 |
<br />
|
64 |
<br />This plugin is developed by <a target="_blank" href="http://www.nsp-code.com">Nsp-Code</a>
|
65 |
|
77 |
|
78 |
* First, stay calm. There will be no harm, guaranteed :)
|
79 |
* Go to admin and change some of plugin options to see which one cause the problem. Then report it to forum or get in touch with us to fix it.
|
80 |
+
* If you can't login to admin, use the Recovery Link which has been sent to your e-mail. This will reset the login to default.
|
81 |
* If for some reason the site appear broken, you should back-up then replace the .htaccess file located on your WordPress root. Then remove the wp-hide-security-enhancer from your plugin directory.
|
82 |
* If still no luck, please get in touch with us at electronice_delphi@yahoo.com and we'll fix it for you in no time!
|
83 |
|
96 |
|
97 |
== Changelog ==
|
98 |
|
99 |
+
= 1.2 =
|
100 |
+
* New Feature Change individual plugin url path
|
101 |
+
* Admin layout improvments
|
102 |
+
* Fix for Admin canonical filter remove if remove canonical option set
|
103 |
+
* PO translations update
|
104 |
+
* Translation
|
105 |
+
|
106 |
= 1.1.7 =
|
107 |
* Remove profile link meta tag within head.
|
108 |
* Remove canonical link meta tag within head
|
114 |
* PO translations update
|
115 |
* TinyMCE emojicons callback fix
|
116 |
|
|
|
|
|
117 |
= 1.1.2 =
|
118 |
* Add a custom url for login_url filter
|
119 |
* Better description and warning for wp-login.php change
|
123 |
* wp-content block when not logged-in
|
124 |
* readme update
|
125 |
|
|
|
126 |
= 1.1 =
|
127 |
* Po / Mo localisation files update
|
128 |
* Update class to process the further structure changes and current components fields name change.
|
screenshot-1.png
CHANGED
Binary file
|
wp-hide.php
CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.nsp-code.com
|
|
5 |
Description: Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
|
6 |
Author: Nsp Code
|
7 |
Author URI: http://www.nsp-code.com
|
8 |
-
Version: 1.
|
9 |
Text Domain: wp-hide-security-enhancer
|
10 |
Domain Path: /languages/
|
11 |
*/
|
5 |
Description: Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
|
6 |
Author: Nsp Code
|
7 |
Author URI: http://www.nsp-code.com
|
8 |
+
Version: 1.2
|
9 |
Text Domain: wp-hide-security-enhancer
|
10 |
Domain Path: /languages/
|
11 |
*/
|