Version Description
Plugin Foundation updated to version PPF02 two new functions for developers
Download this release
Release Info
Developer | petersplugins |
Plugin | 404page – your smart custom 404 error page |
Version | 11.1.0 |
Comparing to | |
See all releases |
Code changes from version 11.0.5 to 11.1.0
- 404page.php +1 -1
- functions.php +17 -1
- inc/class-404page-admin.php +1 -1
- inc/class-404page-block-editor.php +1 -1
- inc/class-404page-classic-editor.php +1 -1
- inc/class-404page-deprecated.php +1 -1
- inc/class-404page-settings.php +1 -1
- inc/class-404page.php +3 -2
- inc/ppf/assets/js/pp-admin-page.js +4 -3
- inc/ppf/loader.php +2 -2
- inc/ppf/ppf-admin.php +23 -13
- inc/ppf/ppf-class.php +14 -10
- inc/ppf/ppf-plugin.php +20 -18
- inc/ppf/ppf-settings.php +4 -4
- inc/ppf/ppf-subclass.php +4 -4
- loader.php +7 -1
- readme.txt +25 -3
404page.php
CHANGED
@@ -9,7 +9,7 @@
|
|
9 |
* Plugin Name: 404page - your smart custom 404 error page
|
10 |
* Plugin URI: https://petersplugins.com/404page/
|
11 |
* Description: Custom 404 the easy way! Set any page as custom 404 error page. No coding needed. Works with (almost) every Theme.
|
12 |
-
* Version: 11.0
|
13 |
* Author: Peter Raschendorfer
|
14 |
* Author URI: https://petersplugins.com
|
15 |
* Text Domain: 404page
|
9 |
* Plugin Name: 404page - your smart custom 404 error page
|
10 |
* Plugin URI: https://petersplugins.com/404page/
|
11 |
* Description: Custom 404 the easy way! Set any page as custom 404 error page. No coding needed. Works with (almost) every Theme.
|
12 |
+
* Version: 11.1.0
|
13 |
* Author: Peter Raschendorfer
|
14 |
* Author URI: https://petersplugins.com
|
15 |
* Text Domain: 404page
|
functions.php
CHANGED
@@ -52,6 +52,7 @@ function pp_404_get_the_content() {
|
|
52 |
|
53 |
}
|
54 |
|
|
|
55 |
// this function can be used by a theme to print out the content of the custom 404 page in native support
|
56 |
function pp_404_the_content() {
|
57 |
|
@@ -59,4 +60,19 @@ function pp_404_the_content() {
|
|
59 |
|
60 |
}
|
61 |
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
}
|
54 |
|
55 |
+
|
56 |
// this function can be used by a theme to print out the content of the custom 404 page in native support
|
57 |
function pp_404_the_content() {
|
58 |
|
60 |
|
61 |
}
|
62 |
|
63 |
+
|
64 |
+
// this function returns the page id of the selected 404 page - in a multilingual environment this returs the id of the page in the current language
|
65 |
+
function pp_404_get_page_id() {
|
66 |
+
|
67 |
+
return pp_404page()->get_page_id();
|
68 |
+
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
// this function returns an array of page ids in all languages
|
73 |
+
function pp_404_get_all_page_ids() {
|
74 |
+
|
75 |
+
return pp_404page()->get_all_page_ids();
|
76 |
+
|
77 |
+
}
|
78 |
+
?>
|
inc/class-404page-admin.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
15 |
*/
|
16 |
if ( !class_exists( 'PP_404Page_Admin' ) ) {
|
17 |
|
18 |
-
class PP_404Page_Admin extends
|
19 |
|
20 |
|
21 |
/**
|
15 |
*/
|
16 |
if ( !class_exists( 'PP_404Page_Admin' ) ) {
|
17 |
|
18 |
+
class PP_404Page_Admin extends PPF02_Admin {
|
19 |
|
20 |
|
21 |
/**
|
inc/class-404page-block-editor.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
15 |
*/
|
16 |
if ( !class_exists( 'PP_404Page_BlockEditor' ) ) {
|
17 |
|
18 |
-
class PP_404Page_BlockEditor extends
|
19 |
|
20 |
/**
|
21 |
* Do Init
|
15 |
*/
|
16 |
if ( !class_exists( 'PP_404Page_BlockEditor' ) ) {
|
17 |
|
18 |
+
class PP_404Page_BlockEditor extends PPF02_SubClass {
|
19 |
|
20 |
/**
|
21 |
* Do Init
|
inc/class-404page-classic-editor.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
15 |
*/
|
16 |
if ( !class_exists( 'PP_404Page_ClassicEditor' ) ) {
|
17 |
|
18 |
-
class PP_404Page_ClassicEditor extends
|
19 |
|
20 |
/**
|
21 |
* Do Init
|
15 |
*/
|
16 |
if ( !class_exists( 'PP_404Page_ClassicEditor' ) ) {
|
17 |
|
18 |
+
class PP_404Page_ClassicEditor extends PPF02_SubClass {
|
19 |
|
20 |
/**
|
21 |
* Do Init
|
inc/class-404page-deprecated.php
CHANGED
@@ -17,7 +17,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
17 |
*/
|
18 |
if ( !class_exists( 'PP_404Page_Deprecated' ) ) {
|
19 |
|
20 |
-
class PP_404Page_Deprecated extends
|
21 |
|
22 |
/**
|
23 |
* Do Init
|
17 |
*/
|
18 |
if ( !class_exists( 'PP_404Page_Deprecated' ) ) {
|
19 |
|
20 |
+
class PP_404Page_Deprecated extends PPF02_SubClass {
|
21 |
|
22 |
/**
|
23 |
* Do Init
|
inc/class-404page-settings.php
CHANGED
@@ -17,7 +17,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
17 |
*/
|
18 |
if ( !class_exists( 'PP_404Page_Settings' ) ) {
|
19 |
|
20 |
-
class PP_404Page_Settings extends
|
21 |
|
22 |
/**
|
23 |
* sanitize settings
|
17 |
*/
|
18 |
if ( !class_exists( 'PP_404Page_Settings' ) ) {
|
19 |
|
20 |
+
class PP_404Page_Settings extends PPF02_Settings {
|
21 |
|
22 |
/**
|
23 |
* sanitize settings
|
inc/class-404page.php
CHANGED
@@ -23,7 +23,7 @@ if ( ! defined( 'PP_404' ) ) {
|
|
23 |
if ( !class_exists( 'PP_404Page' ) ) {
|
24 |
|
25 |
|
26 |
-
class PP_404Page extends
|
27 |
|
28 |
|
29 |
/**
|
@@ -865,8 +865,9 @@ if ( !class_exists( 'PP_404Page' ) ) {
|
|
865 |
|
866 |
/**
|
867 |
* get the id of the 404 page in the current language if WPML or Polylang is active
|
|
|
868 |
*/
|
869 |
-
|
870 |
|
871 |
$pageid = $this->settings()->get( 'page_id' );
|
872 |
|
23 |
if ( !class_exists( 'PP_404Page' ) ) {
|
24 |
|
25 |
|
26 |
+
class PP_404Page extends PPF02_Plugin {
|
27 |
|
28 |
|
29 |
/**
|
865 |
|
866 |
/**
|
867 |
* get the id of the 404 page in the current language if WPML or Polylang is active
|
868 |
+
* public since v 11.1.0 to use it in pp_404_get_page_id()
|
869 |
*/
|
870 |
+
public function get_page_id() {
|
871 |
|
872 |
$pageid = $this->settings()->get( 'page_id' );
|
873 |
|
inc/ppf/assets/js/pp-admin-page.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
jQuery( document ).ready(function( $ ) {
|
2 |
|
|
|
3 |
|
4 |
$( '.tab-navigation .tabset' ).click( function() {
|
5 |
|
@@ -11,17 +12,17 @@ jQuery( document ).ready(function( $ ) {
|
|
11 |
$( '.tab-navigation .tabset.current' ).removeClass( 'current ');
|
12 |
$( this ).addClass( 'current' );
|
13 |
|
14 |
-
$.cookie(
|
15 |
|
16 |
}
|
17 |
|
18 |
});
|
19 |
|
20 |
|
21 |
-
var current_tab = jQuery.cookie(
|
22 |
if ( current_tab === undefined ) {
|
23 |
current_tab = $( '.tab-navigation .tabset:first' ).attr('id');
|
24 |
-
$.removeCookie(
|
25 |
}
|
26 |
$( '#' + current_tab ).trigger( 'click' );
|
27 |
|
1 |
jQuery( document ).ready(function( $ ) {
|
2 |
|
3 |
+
var cookie_name = pp_admin_cookie_prefix + '_current_tab';
|
4 |
|
5 |
$( '.tab-navigation .tabset' ).click( function() {
|
6 |
|
12 |
$( '.tab-navigation .tabset.current' ).removeClass( 'current ');
|
13 |
$( this ).addClass( 'current' );
|
14 |
|
15 |
+
$.cookie( cookie_name, $( '.tab-navigation .tabset.current' ).attr('id') );
|
16 |
|
17 |
}
|
18 |
|
19 |
});
|
20 |
|
21 |
|
22 |
+
var current_tab = jQuery.cookie( cookie_name );
|
23 |
if ( current_tab === undefined ) {
|
24 |
current_tab = $( '.tab-navigation .tabset:first' ).attr('id');
|
25 |
+
$.removeCookie( cookie_name );
|
26 |
}
|
27 |
$( '#' + current_tab ).trigger( 'click' );
|
28 |
|
inc/ppf/loader.php
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
/**
|
4 |
* Plugin Foundation Loader
|
5 |
*
|
6 |
-
* Peter's Plugins Foundation
|
7 |
*
|
8 |
-
* @package
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
3 |
/**
|
4 |
* Plugin Foundation Loader
|
5 |
*
|
6 |
+
* Peter's Plugins Foundation 02
|
7 |
*
|
8 |
+
* @package PPF02
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
inc/ppf/ppf-admin.php
CHANGED
@@ -3,17 +3,17 @@
|
|
3 |
/**
|
4 |
* Admin Class
|
5 |
*
|
6 |
-
* Peter's Plugins Foundation
|
7 |
*
|
8 |
-
* @package
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
-
if ( !class_exists( '
|
14 |
|
15 |
|
16 |
-
abstract class
|
17 |
|
18 |
|
19 |
/**
|
@@ -188,6 +188,8 @@ if ( !class_exists( 'PPF01_Admin' ) ) {
|
|
188 |
*/
|
189 |
public function print_setting_sections() {
|
190 |
|
|
|
|
|
191 |
foreach( $this->_sections as $section ) {
|
192 |
|
193 |
$section_id = $this->core()->get_plugin_slug() . '-' . $section['section'];
|
@@ -198,7 +200,7 @@ if ( !class_exists( 'PPF01_Admin' ) ) {
|
|
198 |
$extraclass = ' nosubmit';
|
199 |
}
|
200 |
|
201 |
-
echo '<div class="panel' . $extraclass . '" id="content-' . $section_id . '">';
|
202 |
|
203 |
if ( array_key_exists( 'html', $section ) ) {
|
204 |
|
@@ -218,6 +220,8 @@ if ( !class_exists( 'PPF01_Admin' ) ) {
|
|
218 |
|
219 |
echo '</div>';
|
220 |
|
|
|
|
|
221 |
}
|
222 |
|
223 |
}
|
@@ -232,17 +236,17 @@ if ( !class_exists( 'PPF01_Admin' ) ) {
|
|
232 |
*/
|
233 |
public function print_setting_sections_nav() {
|
234 |
|
|
|
|
|
235 |
echo '<ul class="tab-navigation">';
|
236 |
|
237 |
foreach( $this->_sections as $section ) {
|
238 |
|
239 |
$section_id = $this->core()->get_plugin_slug() . '-' . $section['section'];
|
240 |
|
241 |
-
|
242 |
-
|
243 |
-
// echo '<li><input type="radio" name="tabset" id="tab-' . $section_id . '" data-tab-content="content-' . $section_id . '"aria-controls="' . $section['title'] . '"' . $sel . '><label for="tab-' . $section_id . '">' . $section['title'] . '</label>';
|
244 |
|
245 |
-
|
246 |
|
247 |
}
|
248 |
|
@@ -367,7 +371,12 @@ if ( !class_exists( 'PPF01_Admin' ) ) {
|
|
367 |
|
368 |
}
|
369 |
|
370 |
-
|
|
|
|
|
|
|
|
|
|
|
371 |
|
372 |
echo '<div class="wrap pp-admin-page-wrapper" id="pp-' . $this->core()->get_plugin_slug() . '-settings"><div class="pp-admin-notice-area"><div class="wp-header-end"></div></div>';
|
373 |
echo '<div class="pp-admin-page-header">';
|
@@ -381,11 +390,12 @@ if ( !class_exists( 'PPF01_Admin' ) ) {
|
|
381 |
$this->print_setting_sections();
|
382 |
submit_button();
|
383 |
echo '</div></form></div></div>';
|
|
|
384 |
|
385 |
-
wp_enqueue_style( '
|
386 |
|
387 |
-
wp_enqueue_script( '
|
388 |
-
wp_enqueue_script( '
|
389 |
|
390 |
}
|
391 |
|
3 |
/**
|
4 |
* Admin Class
|
5 |
*
|
6 |
+
* Peter's Plugins Foundation 02
|
7 |
*
|
8 |
+
* @package PPF02
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
+
if ( !class_exists( 'PPF02_Admin' ) ) {
|
14 |
|
15 |
|
16 |
+
abstract class PPF02_Admin extends PPF02_SubClass {
|
17 |
|
18 |
|
19 |
/**
|
188 |
*/
|
189 |
public function print_setting_sections() {
|
190 |
|
191 |
+
$currentclass = ' current';
|
192 |
+
|
193 |
foreach( $this->_sections as $section ) {
|
194 |
|
195 |
$section_id = $this->core()->get_plugin_slug() . '-' . $section['section'];
|
200 |
$extraclass = ' nosubmit';
|
201 |
}
|
202 |
|
203 |
+
echo '<div class="panel' . $extraclass . $currentclass . '" id="content-' . $section_id . '">';
|
204 |
|
205 |
if ( array_key_exists( 'html', $section ) ) {
|
206 |
|
220 |
|
221 |
echo '</div>';
|
222 |
|
223 |
+
$currentclass = '';
|
224 |
+
|
225 |
}
|
226 |
|
227 |
}
|
236 |
*/
|
237 |
public function print_setting_sections_nav() {
|
238 |
|
239 |
+
$currentclass = ' current';
|
240 |
+
|
241 |
echo '<ul class="tab-navigation">';
|
242 |
|
243 |
foreach( $this->_sections as $section ) {
|
244 |
|
245 |
$section_id = $this->core()->get_plugin_slug() . '-' . $section['section'];
|
246 |
|
247 |
+
echo '<li><div class="tabset' . $currentclass . '" id="tab-' . $section_id . '" data-tab-content="content-' . $section_id . '">' . $section['title'] . '</div>';
|
|
|
|
|
248 |
|
249 |
+
$currentclass = '';
|
250 |
|
251 |
}
|
252 |
|
371 |
|
372 |
}
|
373 |
|
374 |
+
if ( get_current_screen()->parent_base != 'options-general' ) {
|
375 |
+
|
376 |
+
// On Option Screens settings_errors() is called automatically
|
377 |
+
settings_errors();
|
378 |
+
|
379 |
+
}
|
380 |
|
381 |
echo '<div class="wrap pp-admin-page-wrapper" id="pp-' . $this->core()->get_plugin_slug() . '-settings"><div class="pp-admin-notice-area"><div class="wp-header-end"></div></div>';
|
382 |
echo '<div class="pp-admin-page-header">';
|
390 |
$this->print_setting_sections();
|
391 |
submit_button();
|
392 |
echo '</div></form></div></div>';
|
393 |
+
echo '<script>var pp_admin_cookie_prefix="' . $this->core()->get_plugin_slug() . '";</script>';
|
394 |
|
395 |
+
wp_enqueue_style( $this->core()->get_plugin_slug() . '-ppf02', $this->get_foundation_asset_url( 'css', 'pp-admin-page.css' ) );
|
396 |
|
397 |
+
wp_enqueue_script( $this->core()->get_plugin_slug() . '-ppf02-cookie', $this->get_foundation_asset_url( 'js', 'jquery.cookie.js' ), array( 'jquery' ), false, true );
|
398 |
+
wp_enqueue_script( $this->core()->get_plugin_slug() . '-ppf02', $this->get_foundation_asset_url( 'js', 'pp-admin-page.js' ), array( 'jquery', $this->core()->get_plugin_slug() . '-ppf02-cookie' ), false, true );
|
399 |
|
400 |
}
|
401 |
|
inc/ppf/ppf-class.php
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
/**
|
4 |
* Base Class
|
5 |
*
|
6 |
-
* Peter's Plugins Foundation
|
7 |
*
|
8 |
-
* @package
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
@@ -19,20 +19,22 @@
|
|
19 |
}
|
20 |
|
21 |
|
22 |
-
if ( !class_exists( '
|
23 |
|
24 |
|
25 |
-
abstract class
|
26 |
|
27 |
|
28 |
/**
|
29 |
* foundation dir
|
30 |
*
|
|
|
|
|
31 |
* @since PPF01
|
32 |
* @var string
|
33 |
* @access private
|
34 |
*/
|
35 |
-
private $_dir;
|
36 |
|
37 |
|
38 |
/**
|
@@ -43,15 +45,14 @@ if ( !class_exists( 'PPF01_Class' ) ) {
|
|
43 |
*/
|
44 |
public function __construct() {
|
45 |
|
46 |
-
|
47 |
-
$
|
48 |
-
$this->_dir = dirname($rc->getFileName());
|
49 |
|
50 |
}
|
51 |
|
52 |
|
53 |
/**
|
54 |
-
* get
|
55 |
*
|
56 |
* @since PPF01
|
57 |
* @access protected
|
@@ -59,8 +60,11 @@ if ( !class_exists( 'PPF01_Class' ) ) {
|
|
59 |
*/
|
60 |
protected function get_foundation_dir() {
|
61 |
|
62 |
-
|
63 |
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
|
3 |
/**
|
4 |
* Base Class
|
5 |
*
|
6 |
+
* Peter's Plugins Foundation 02
|
7 |
*
|
8 |
+
* @package PPF02
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
19 |
}
|
20 |
|
21 |
|
22 |
+
if ( !class_exists( 'PPF02_Class' ) ) {
|
23 |
|
24 |
|
25 |
+
abstract class PPF02_Class {
|
26 |
|
27 |
|
28 |
/**
|
29 |
* foundation dir
|
30 |
*
|
31 |
+
* removed in PPF02
|
32 |
+
*
|
33 |
* @since PPF01
|
34 |
* @var string
|
35 |
* @access private
|
36 |
*/
|
37 |
+
// private $_dir;
|
38 |
|
39 |
|
40 |
/**
|
45 |
*/
|
46 |
public function __construct() {
|
47 |
|
48 |
+
// removed in PPF02
|
49 |
+
// $this->_dir = __DIR__;
|
|
|
50 |
|
51 |
}
|
52 |
|
53 |
|
54 |
/**
|
55 |
+
* get foundation directory
|
56 |
*
|
57 |
* @since PPF01
|
58 |
* @access protected
|
60 |
*/
|
61 |
protected function get_foundation_dir() {
|
62 |
|
63 |
+
// since PPF02 we have to get the Directory of the Called Class to allow multiple classes based on the same Plugin Foundation
|
64 |
|
65 |
+
$rc = new ReflectionClass( get_called_class() );
|
66 |
+
return dirname( $rc->getFileName() ) . '/ppf';
|
67 |
+
|
68 |
}
|
69 |
|
70 |
|
inc/ppf/ppf-plugin.php
CHANGED
@@ -3,27 +3,28 @@
|
|
3 |
/**
|
4 |
* Plugin Base Class
|
5 |
*
|
6 |
-
* Peter's Plugins Foundation
|
7 |
*
|
8 |
-
* @package
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
|
14 |
-
if ( !class_exists( '
|
15 |
|
16 |
-
|
17 |
-
abstract class PPF01_Plugin extends PPF01_Class {
|
18 |
|
19 |
/**
|
20 |
-
*
|
21 |
*
|
22 |
-
*
|
|
|
|
|
23 |
* @var singleton
|
24 |
* @access protected
|
25 |
*/
|
26 |
-
protected static $
|
27 |
|
28 |
|
29 |
/**
|
@@ -158,7 +159,7 @@ if ( !class_exists( 'PPF01_Plugin' ) ) {
|
|
158 |
*
|
159 |
* @since PPF01
|
160 |
*/
|
161 |
-
protected function __clone() {}
|
162 |
|
163 |
|
164 |
/**
|
@@ -173,16 +174,17 @@ if ( !class_exists( 'PPF01_Plugin' ) ) {
|
|
173 |
* }
|
174 |
* @return singleton
|
175 |
*/
|
176 |
-
public static function getInstance( $settings )
|
177 |
-
|
178 |
-
if ( null === static::$_instance ) {
|
179 |
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
|
|
|
|
186 |
}
|
187 |
|
188 |
|
3 |
/**
|
4 |
* Plugin Base Class
|
5 |
*
|
6 |
+
* Peter's Plugins Foundation 02
|
7 |
*
|
8 |
+
* @package PPF02
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
|
14 |
+
if ( !class_exists( 'PPF02_Plugin' ) ) {
|
15 |
|
16 |
+
abstract class PPF02_Plugin extends PPF02_Class {
|
|
|
17 |
|
18 |
/**
|
19 |
+
* Instances
|
20 |
*
|
21 |
+
* since PPF02 this is an array to allow multiple classes based on the same Plugin Foundation
|
22 |
+
*
|
23 |
+
* @since PPF02
|
24 |
* @var singleton
|
25 |
* @access protected
|
26 |
*/
|
27 |
+
protected static $_instances = array();
|
28 |
|
29 |
|
30 |
/**
|
159 |
*
|
160 |
* @since PPF01
|
161 |
*/
|
162 |
+
final protected function __clone() {}
|
163 |
|
164 |
|
165 |
/**
|
174 |
* }
|
175 |
* @return singleton
|
176 |
*/
|
177 |
+
final public static function getInstance( $settings )
|
178 |
+
{
|
|
|
179 |
|
180 |
+
$calledClass = get_called_class();
|
181 |
+
|
182 |
+
if ( !isset( $_instances[$calledClass] ) )
|
183 |
+
{
|
184 |
+
$_instances[$calledClass] = new $calledClass( $settings );
|
185 |
+
}
|
186 |
+
|
187 |
+
return $_instances[$calledClass];
|
188 |
}
|
189 |
|
190 |
|
inc/ppf/ppf-settings.php
CHANGED
@@ -3,17 +3,17 @@
|
|
3 |
/**
|
4 |
* Settings Class
|
5 |
*
|
6 |
-
* Peter's Plugins Foundation
|
7 |
*
|
8 |
-
* @package
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
-
if ( !class_exists( '
|
14 |
|
15 |
|
16 |
-
abstract class
|
17 |
|
18 |
/**
|
19 |
* name of settings in databse (meta_key)
|
3 |
/**
|
4 |
* Settings Class
|
5 |
*
|
6 |
+
* Peter's Plugins Foundation 02
|
7 |
*
|
8 |
+
* @package PPF02
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
+
if ( !class_exists( 'PPF02_Settings' ) ) {
|
14 |
|
15 |
|
16 |
+
abstract class PPF02_Settings extends PPF02_SubClass {
|
17 |
|
18 |
/**
|
19 |
* name of settings in databse (meta_key)
|
inc/ppf/ppf-subclass.php
CHANGED
@@ -3,17 +3,17 @@
|
|
3 |
/**
|
4 |
* Plugin Base Sub-Class
|
5 |
*
|
6 |
-
* Peter's Plugins Foundation
|
7 |
*
|
8 |
-
* @package
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
-
if ( !class_exists( '
|
14 |
|
15 |
|
16 |
-
abstract class
|
17 |
|
18 |
/**
|
19 |
* reference to core class
|
3 |
/**
|
4 |
* Plugin Base Sub-Class
|
5 |
*
|
6 |
+
* Peter's Plugins Foundation 02
|
7 |
*
|
8 |
+
* @package PPF02
|
9 |
* @author Peter Raschendorfer
|
10 |
* @license GPL2+
|
11 |
*/
|
12 |
|
13 |
+
if ( !class_exists( 'PPF02_SubClass' ) ) {
|
14 |
|
15 |
|
16 |
+
abstract class PPF02_SubClass extends PPF02_Class {
|
17 |
|
18 |
/**
|
19 |
* reference to core class
|
loader.php
CHANGED
@@ -26,6 +26,12 @@ require_once( plugin_dir_path( __FILE__ ) . '/inc/ppf/loader.php' );
|
|
26 |
require_once( plugin_dir_path( __FILE__ ) . '/inc/class-404page.php' );
|
27 |
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
/**
|
30 |
* Main Function
|
31 |
*/
|
@@ -36,7 +42,7 @@ function pp_404page() {
|
|
36 |
'slug' => pathinfo( dirname( __FILE__ ) . '/404page.php', PATHINFO_FILENAME ),
|
37 |
'name' => '404page - your smart custom 404 error page',
|
38 |
'shortname' => '404page',
|
39 |
-
'version' => '11.0
|
40 |
) );
|
41 |
|
42 |
}
|
26 |
require_once( plugin_dir_path( __FILE__ ) . '/inc/class-404page.php' );
|
27 |
|
28 |
|
29 |
+
/**
|
30 |
+
* Load Plugin Functions
|
31 |
+
*/
|
32 |
+
require_once( plugin_dir_path( __FILE__ ) . '/functions.php' );
|
33 |
+
|
34 |
+
|
35 |
/**
|
36 |
* Main Function
|
37 |
*/
|
42 |
'slug' => pathinfo( dirname( __FILE__ ) . '/404page.php', PATHINFO_FILENAME ),
|
43 |
'name' => '404page - your smart custom 404 error page',
|
44 |
'shortname' => '404page',
|
45 |
+
'version' => '11.1.0'
|
46 |
) );
|
47 |
|
48 |
}
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: petersplugins
|
3 |
Tags: page, 404, error, error page, 404 page, page not found, page not found error, 404 error page, missing, broken link, template, 404 link, seo, custom 404, custom 404 page, custom 404 error, custom 404 error page, customize 404, customize 404 page, customize 404 error page, classicpress
|
4 |
Requires at least: 4.0
|
5 |
-
Tested up to: 5.
|
6 |
-
Stable tag: 11.0
|
7 |
Requires PHP: 5.4
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -74,6 +74,8 @@ The only requirement for this plugin is that you change the Permalink Structure
|
|
74 |
* [Twenty Fifteen](https://wordpress.org/themes/twentyfifteen/)
|
75 |
* [Twenty Sixteen](https://wordpress.org/themes/twentysixteen/)
|
76 |
* [Twenty Seventeen](https://wordpress.org/themes/twentyseventeen/)
|
|
|
|
|
77 |
* [Vantage](https://wordpress.org/themes/vantage/)
|
78 |
* [Virtue](https://wordpress.org/themes/virtue/)
|
79 |
* [Zerif Lite](http://themeisle.com/themes/zerif-lite/)
|
@@ -100,7 +102,19 @@ The only requirement for this plugin is that you change the Permalink Structure
|
|
100 |
= Action Hook =
|
101 |
The plugin adds an action hook 404page_after_404 which you can use to add extra functionality. The exact position the action occurs after an 404 error is detected depends on the Operating Method. Your function must not generate any output. There are no parameters.
|
102 |
|
103 |
-
=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
If you are a theme developer you can add native support for the 404page plugin to your theme for full control. [Read more](http://petersplugins.com/docs/404page/#theme_native_support).
|
105 |
|
106 |
== Do you like this plugin? ==
|
@@ -157,6 +171,10 @@ Please use the [Support Forum](https://wordpress.org/support/plugin/404page).
|
|
157 |
|
158 |
== Changelog ==
|
159 |
|
|
|
|
|
|
|
|
|
160 |
= 11.0.5 (2019-10-22) =
|
161 |
* bugfix for Yoast SEO XML Sitemap ([see topic](https://wordpress.org/support/topic/small-bug-with-wpseo_exclude_from_sitemap_by_post_ids/))
|
162 |
* added a note to settings page if Yoast SEO is active
|
@@ -308,6 +326,10 @@ Please use the [Support Forum](https://wordpress.org/support/plugin/404page).
|
|
308 |
|
309 |
== Upgrade Notice ==
|
310 |
|
|
|
|
|
|
|
|
|
311 |
= 11.0.5 =
|
312 |
bugfix for Yoast SEO XML Sitemap
|
313 |
|
2 |
Contributors: petersplugins
|
3 |
Tags: page, 404, error, error page, 404 page, page not found, page not found error, 404 error page, missing, broken link, template, 404 link, seo, custom 404, custom 404 page, custom 404 error, custom 404 error page, customize 404, customize 404 page, customize 404 error page, classicpress
|
4 |
Requires at least: 4.0
|
5 |
+
Tested up to: 5.3
|
6 |
+
Stable tag: 11.1.0
|
7 |
Requires PHP: 5.4
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
74 |
* [Twenty Fifteen](https://wordpress.org/themes/twentyfifteen/)
|
75 |
* [Twenty Sixteen](https://wordpress.org/themes/twentysixteen/)
|
76 |
* [Twenty Seventeen](https://wordpress.org/themes/twentyseventeen/)
|
77 |
+
* [Twenty Nineteen](https://wordpress.org/themes/twentynineteen/)
|
78 |
+
* [Twenty Twenty]
|
79 |
* [Vantage](https://wordpress.org/themes/vantage/)
|
80 |
* [Virtue](https://wordpress.org/themes/virtue/)
|
81 |
* [Zerif Lite](http://themeisle.com/themes/zerif-lite/)
|
102 |
= Action Hook =
|
103 |
The plugin adds an action hook 404page_after_404 which you can use to add extra functionality. The exact position the action occurs after an 404 error is detected depends on the Operating Method. Your function must not generate any output. There are no parameters.
|
104 |
|
105 |
+
= Constant =
|
106 |
+
If the 404page plugin is installed and activated it defines the PHP constant PP_404. Check existence of it to detect the 404page plugin.
|
107 |
+
|
108 |
+
= Functions =
|
109 |
+
The Plugin provides the following functions:
|
110 |
+
|
111 |
+
* pp_404_is_active() to check if there is a custom 404 page selected and the selected page exists
|
112 |
+
* pp_404_get_page_id() to get the ID of the 404 page
|
113 |
+
* pp_404_get_all_page_ids() to get an array of page IDs in all languages
|
114 |
+
|
115 |
+
[Read more](http://petersplugins.com/docs/404page/#functions)
|
116 |
+
|
117 |
+
= Native Mode =
|
118 |
If you are a theme developer you can add native support for the 404page plugin to your theme for full control. [Read more](http://petersplugins.com/docs/404page/#theme_native_support).
|
119 |
|
120 |
== Do you like this plugin? ==
|
171 |
|
172 |
== Changelog ==
|
173 |
|
174 |
+
= 11.1.0 (2019-11-10) =
|
175 |
+
* now uses Plugin Foundation PPF02 for plugin compatibility
|
176 |
+
* introduces two new functions for developers pp_404_get_page_id() and pp_404_get_all_page_ids()
|
177 |
+
|
178 |
= 11.0.5 (2019-10-22) =
|
179 |
* bugfix for Yoast SEO XML Sitemap ([see topic](https://wordpress.org/support/topic/small-bug-with-wpseo_exclude_from_sitemap_by_post_ids/))
|
180 |
* added a note to settings page if Yoast SEO is active
|
326 |
|
327 |
== Upgrade Notice ==
|
328 |
|
329 |
+
= 11.1.0 =
|
330 |
+
Plugin Foundation updated to version PPF02
|
331 |
+
two new functions for developers
|
332 |
+
|
333 |
= 11.0.5 =
|
334 |
bugfix for Yoast SEO XML Sitemap
|
335 |
|