404page – your smart custom 404 error page - Version 2.3

Version Description

(2016-11-21) = * a few minor bug fixes solve some problems with page templates in certain combinations

Download this release

Release Info

Developer smartware.cc
Plugin Icon 128x128 404page – your smart custom 404 error page
Version 2.3
Comparing to
See all releases

Code changes from version 2.2 to 2.3

Files changed (2) hide show
  1. 404page.php +18 -9
  2. readme.txt +6 -5
404page.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: 404page - your smart custom 404 error page
4
  Plugin URI: http://petersplugins.com/free-wordpress-plugins/404page/
5
  Description: Custom 404 the easy way! Set any page as custom 404 error page. No coding needed. Works with (almost) every Theme.
6
- Version: 2.2
7
  Author: Peter's Plugins, smartware.cc
8
  Author URI: http://petersplugins.com
9
  Text Domain: 404page
@@ -32,7 +32,7 @@ class Smart404Page {
32
  public function __construct() {
33
  $this->plugin_name = '404page';
34
  $this->plugin_slug = '404page';
35
- $this->version = '2.2';
36
  $this->get_settings();
37
  $this->init();
38
  }
@@ -193,9 +193,10 @@ class Smart404Page {
193
  // this function overrides the page template in compatibilty mode
194
  function change_404_template( $template ) {
195
  // we have to check if the template file is there because if the theme was changed maybe a wrong template is stored in the database
196
- if ( file_exists( $this->template ) || '' != locate_template( $this->template ) ) {
197
- return $this->template;
198
- }
 
199
  return $template;
200
  }
201
 
@@ -342,15 +343,23 @@ class Smart404Page {
342
  function exclude_404page( $query ) {
343
  if ( $this->settings['404page_page_id'] > 0 ) {
344
  global $pagenow;
345
- if( is_admin() && ( 'edit.php' == $pagenow && ( get_query_var( 'post_type' ) && 'page' == get_query_var( 'post_type' ) ) && !current_user_can( 'create_users' ) ) || ! is_admin() ) {
 
 
 
 
346
  $pageid = $this->settings['404page_page_id'];
 
347
  if ( ! is_admin() ) {
348
  $pageid = $this->get_page_id( $pageid );
349
  }
350
- $query->set( 'post__not_in', array( $pageid ) );
 
 
 
 
351
  }
352
  }
353
- return $query;
354
  }
355
 
356
  // this function removes the 404 page from get_pages result array
@@ -447,7 +456,7 @@ class Smart404Page {
447
  return (bool)get_option( '404page_fire_error', true );
448
  }
449
 
450
- // thsi function gets the id of the translated page if WPML or Polylang is active - otherwise the original pageid is returned
451
  private function get_page_id( $pageid ) {
452
 
453
  if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
3
  Plugin Name: 404page - your smart custom 404 error page
4
  Plugin URI: http://petersplugins.com/free-wordpress-plugins/404page/
5
  Description: Custom 404 the easy way! Set any page as custom 404 error page. No coding needed. Works with (almost) every Theme.
6
+ Version: 2.3
7
  Author: Peter's Plugins, smartware.cc
8
  Author URI: http://petersplugins.com
9
  Text Domain: 404page
32
  public function __construct() {
33
  $this->plugin_name = '404page';
34
  $this->plugin_slug = '404page';
35
+ $this->version = '2.3';
36
  $this->get_settings();
37
  $this->init();
38
  }
193
  // this function overrides the page template in compatibilty mode
194
  function change_404_template( $template ) {
195
  // we have to check if the template file is there because if the theme was changed maybe a wrong template is stored in the database
196
+ $new_template = locate_template( array( $this->template ) );
197
+ if ( '' != $new_template ) {
198
+ return $new_template ;
199
+ }
200
  return $template;
201
  }
202
 
343
  function exclude_404page( $query ) {
344
  if ( $this->settings['404page_page_id'] > 0 ) {
345
  global $pagenow;
346
+
347
+ $post_type = $query->get( 'post_type' );
348
+
349
+ // as of v 2.3 we check the post_type on front end
350
+ if( ( is_admin() && ( 'edit.php' == $pagenow && !current_user_can( 'create_users' ) ) ) || ( ! is_admin() && ( !empty( $post_type) && ( ('page' === $post_type || 'any' === $post_type) || ( is_array( $post_type ) && in_array( 'page', $post_type ) ) ) )) ) {
351
  $pageid = $this->settings['404page_page_id'];
352
+
353
  if ( ! is_admin() ) {
354
  $pageid = $this->get_page_id( $pageid );
355
  }
356
+
357
+ // as of v 2.3 we add the ID of the 404 page to post__not_in
358
+ // using just $query->set() overrides existing settings but not adds a new setting
359
+ $query->set( 'post__not_in', array_merge( (array)$query->get( 'post__not_in', array() ), array( $pageid ) ) );
360
+
361
  }
362
  }
 
363
  }
364
 
365
  // this function removes the 404 page from get_pages result array
456
  return (bool)get_option( '404page_fire_error', true );
457
  }
458
 
459
+ // this function gets the id of the translated page if WPML or Polylang is active - otherwise the original pageid is returned
460
  private function get_page_id( $pageid ) {
461
 
462
  if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: petersplugins, smartware.cc
3
  Donate link:http://petersplugins.com/make-a-donation/
4
  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
5
  Requires at least: 3.0
6
- Tested up to: 4.6
7
- Stable tag: 2.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -16,9 +16,6 @@ Custom 404 the easy way! Set any page as custom 404 error page. No coding needed
16
 
17
  **See also [Plugin Homepage](http://petersplugins.com/free-wordpress-plugins/404page/) and [Plugin Doc](http://petersplugins.com/docs/404page/)**
18
 
19
- = Version 2.2 Update Notice =
20
- Please note that the Plugin **no longer switches to Compatibility Mode automatically** under certain conditions. Trying to identify several configurations where Compatibility Mode is required caused some other problems. Take a look at the [release notes](http://petersplugins.com/blog/2016/09/26/404page-version-2-2-a-lot-of-changes-under-the-hood).
21
-
22
  https://www.youtube.com/watch?v=VTL07Lf0IsY
23
 
24
  Create your custom 404 Page as a normal WordPress Page using the full power of WordPress. You can use a Custom Page Template or Custom Fields, you can set a Featured Image - everything like on every other Page. Then go to 'Appearance' -> '404 Error Page' from your WordPress Dashbord and select the created Page as your 404 error page. That's it!
@@ -83,6 +80,9 @@ The 404page plugin adds a CSS class `error404` to the `<body>` tag which can be
83
 
84
  == Changelog ==
85
 
 
 
 
86
  = 2.2 (2016-09-26) =
87
  * automatic switch to Compatibility Mode for several plugins removed
88
  * enhanced support for WPML and Polylang
@@ -168,6 +168,7 @@ Editing of the 404 page is now possible directly from settings page. Portuguese
168
  * [Twenty Fourteen](https://wordpress.org/themes/twentyfourteen/)
169
  * [Twenty Fifteen](https://wordpress.org/themes/twentyfifteen/)
170
  * [Twenty Sixteen](https://wordpress.org/themes/twentysixteen/)
 
171
  * [Vantage](https://wordpress.org/themes/vantage/)
172
  * [Virtue](https://wordpress.org/themes/virtue/)
173
  * [Zerif Lite](http://themeisle.com/themes/zerif-lite/)
3
  Donate link:http://petersplugins.com/make-a-donation/
4
  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
5
  Requires at least: 3.0
6
+ Tested up to: 4.7
7
+ Stable tag: 2.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
16
 
17
  **See also [Plugin Homepage](http://petersplugins.com/free-wordpress-plugins/404page/) and [Plugin Doc](http://petersplugins.com/docs/404page/)**
18
 
 
 
 
19
  https://www.youtube.com/watch?v=VTL07Lf0IsY
20
 
21
  Create your custom 404 Page as a normal WordPress Page using the full power of WordPress. You can use a Custom Page Template or Custom Fields, you can set a Featured Image - everything like on every other Page. Then go to 'Appearance' -> '404 Error Page' from your WordPress Dashbord and select the created Page as your 404 error page. That's it!
80
 
81
  == Changelog ==
82
 
83
+ = 2.3 (2016-11-21) =
84
+ * a few minor bug fixes solve some problems with page templates in certain combinations
85
+
86
  = 2.2 (2016-09-26) =
87
  * automatic switch to Compatibility Mode for several plugins removed
88
  * enhanced support for WPML and Polylang
168
  * [Twenty Fourteen](https://wordpress.org/themes/twentyfourteen/)
169
  * [Twenty Fifteen](https://wordpress.org/themes/twentyfifteen/)
170
  * [Twenty Sixteen](https://wordpress.org/themes/twentysixteen/)
171
+ * [Twenty Seventeen](https://wordpress.org/themes/twentyseventeen/)
172
  * [Vantage](https://wordpress.org/themes/vantage/)
173
  * [Virtue](https://wordpress.org/themes/virtue/)
174
  * [Zerif Lite](http://themeisle.com/themes/zerif-lite/)