描述
Welcome to WP 404 Auto Redirect to Similar Post!
This plugin automatically redirect 404 pages to similar posts based on Title, Post Types & Taxonomies. If nothing similar is found, visitors will be redirected to the homepage or a custom URL.
Features:
- Automatically detect any 404.
- Automatically search a similar post based on multiple factors:
- Title
- Potential Post Type
- Potential Taxonomy
- If nothing similar is found, set your Fallback Behavior:
- Redirect to homepage
- Redirect to a custom URL
- Display the default 404 page
- Choose the redirection HTTP header status:
- 301 headers
- 302 headers
- Exclude Post Types from possible redirections.
- Exclude Taxonomies from possible redirections.
- Exclude Posts based on a custom post meta.
- Exclude Terms based on a custom term meta.
- Display the Debug Console instead of being redirected (Admin).
- Preview possible redirection from the administration panel.
*New* Features:
- Expose ‘WP-404-Auto-Redirect’ headers on 404 pages. (Admin).
- Log redirections in the /wp-content/debug.log file.
- Create your own search engines logic.
- Create your own search engines groups & fire sequence.
*New* Engines & Groups:
WP 404 Auto Redirect to Similar Post 1.0 introduces the concept of engines and groups which let you customize your own searching & matching logic. The plugin comes with 5 engines and 1 default group out of the box!
Default Group Engines:
-
Fix URL
Find and fix common URL mistakes. -
Direct Match
Search for a Post that perfectly match keywords. -
Search Post
Search for a similar Post. -
Search Term
Search for a similar Term. -
Search Post: Fallback
If a Post Type is set in the WP Query, redirect to the Post Type Archive.
But Also:
- Easy to Install / Uninstall.
- No useless data saved in Database.
- Blazing Fast Performance.
Compatibility:
WP 404 Auto Redirect to Similar Post is 100% compatible with all popular manual redirection plugins:
If you use one of them, but missed a manual redirection and a 404 is about to be displayed, WP 404 Auto Redirect to Similar Post will cover you.
Reviews
They talk about us! 🙂
- Quels plugins utiliser pour corriger les erreurs 404 sous WordPress ?
- 6+ 404 Redirect WordPress Plugins 2018 (Free and Paid)
- 12 Best Free SEO Plugins for WordPress
- Recommended Plugins for WordPress
- Top WordPress Plugins I Can’t Do Without
- Permalink Finder Plugin is deprecated
- Membuat halaman Error 404 menjadi SEO friendly
- The Ultimate Guide to Starting a Travel Blog
- 80 Best WordPress Plugins for 2018
屏幕截图
安装
WordPress Install
- Upload the plugin files to the
/wp-content/plugins/wp-404-auto-redirect-similar-post
directory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the ‘Plugins’ screen in WordPress.
- Go to Settings > WP 404 Auto Redirect to change your settings.
- Everything is ready! Now try to trigger a 404 page!
常见问题
-
Developers: Create a Custom Group
-
Advanced Usage: If you don’t know how to use filters & actions, please read the official WordPress Plugin API.
// Create a Group with only 3 Default Engines, and set a custom fire sequence add_action('wp404arsp/search/init', 'my_404_group'); function my_404_group($query){ wp404arsp_register_group(array( // Set Group Name 'name' => 'My Group', // Set Group Slug 'slug' => 'my_group', // Set Engines & the fire sequence 'engines' => array( 'default_post', // Add Default: Search Post Engine 'default_fix_url', // Add Default: Fix URL Engine 'default_direct', // Add Default: Default: Direct Match Engine ) )); } // Trigger the Custom Group: 'My Group' when the 404 Page URL starts with '/product/xxxx/' add_filter('wp404arsp/search/group', 'my_404_group_trigger', 10, 2); function my_404_group_trigger($group, $query){ // Developers: Print $query array for more request context // Our condition: 404 Page URL starts with '/product/xxxx/' if(preg_match('#/product/(.+?)/?$#i', $query['request']['url'])){ $group = 'my_group'; // My Group Slug } // Always return Group return $group; }
-
Developers: Create a Custom Engine
-
Advanced Usage: If you don’t know how to use filters & actions, please read the official WordPress Plugin API.
// Create a Custom Engine add_action('wp404arsp/search/init', 'my_404_group_engine'); function my_404_group_engine($query){ wp404arsp_register_engine(array( // Set Engine Name 'name' => 'My Engine', // Set Engine Slug 'slug' => 'my_engine', // Set Engine Weight (Score = Keyword_Found * Weight) 'weight' => 100, // Set Primary Option (true|false). If Primary is true, then stop fire sequence if the score > 0. 'primary' => true )); // Use the engine in a new Group called 'My Group' wp404arsp_register_group(array( // Set Group Name 'name' => 'My Group', // Set Group Slug 'slug' => 'my_group', // Set Engines & the fire sequence 'engines' => array( 'my_engine', // Add My Engine ) )); } // Trigger the Custom Group: 'My Group' when the 404 Page URL starts with '/product/xxxx/' add_filter('wp404arsp/search/group', 'my_404_group_trigger', 10, 2); function my_404_group_trigger($group, $query){ // Developers: Print $query array for more request context // Our condition: 404 Page URL starts with '/product/xxxx/' if(preg_match('#/product/(.+?)/?$#i', $query['request']['url'])){ $group = 'my_group'; // My Group Slug } // Always return Group return $group; } // Define a Custom Engine Logic add_filter('wp404arsp/search/engine/my_engine', 'my_404_engine_definition', 10, 3); function my_404_engine_definition($result, $query, $group){ // Developers: Print $query array for more request context // You have access to $query & the current $group as a context for the engine logic // In this example 'My Engine' is the only engine in 'My Group' // 'My Group' is triggered when the 404 Page URL starts with '/product/xxxx/' // What we want: Search for a similar post inside a specific Post Type: 'project' // Grab all Keywords in the URL $keywords = explode('-', $query['request']['keywords']['all']); // Run Search $search = wp404arsp_search(array( 'keywords' => $keywords, // Add keywords 'mode' => 'post', // Search for Post 'post_type' => 'project', // inside Post Type: 'project' ), $query); // Found something! if($search['score'] > 0){ // Return result return array( 'score' => $search['score'], 'url' => get_permalink($search['post_id']), 'why' => "This engine is Awesome! We found a similar Product inside the Post Type <strong>project</strong>!" ); } // Nothing found :( else{ return "Mehh... No similar Product found inside the Post Type <strong>project</strong>."; } }
-
Developers: Manipulate existing Groups & Engines
-
Advanced Usage: If you don’t know how to use filters & actions, please read the official WordPress Plugin API.
add_action('wp404arsp/search/init', 'my_404_manipulate_groups_and_engines'); function my_404_manipulate_groups_and_engines($query){ // Move the default engine 'Direct Match' at the end of the 'Default Group' fire Sequence wp404arsp_reorder_group_engines(array( // Target Group Slug 'group' => 'default', // Target Engine Slug 'engine' => 'default_direct', // Set new Position in fire sequence. (In this example: 4 instead of 2). 'order' => 4 )); // Register new Engines & Fire Sequence for the existing Group 'My Group' wp404arsp_register_group_engines(array( // Target Group Slug 'group' => 'my_group', // New Engines & Fire Sequence 'engines' => array( 'my_engine', // Add Custom: My Engine 'default_post' // Add Default: Search Post Engine ) )); // Deregister an existing Engine. // The engine will be removed from any Groups which use it. The engine won't be registered anymore. // Target specific Engine Slug wp404arsp_deregister_engine('my_another_engine'); }
-
Developers: Always use a custom Group
-
Advanced Usage: If you don’t know how to use filters & actions, please read the official WordPress Plugin API.
// Always trigger the Custom Group 'My Group' instead of the Default Group add_filter('wp404arsp/search/group', 'my_404_group_trigger_forever', 10, 2); function my_404_group_trigger_forever($group, $query){ // Developers: Print $query array for more request context // Always return 'My Group' return 'my_group'; }
-
Developers: Disable the plugin initialization at some conditions
-
Advanced Usage: If you don’t know how to use filters & actions, please read the official WordPress Plugin API.
// Do not load the plugin if the 404 URL starts with '/calendar/xxxx/' add_filter('wp404arsp/init', 'my_404_no_init', 10, 2); function my_404_no_init($init, $query){ // Developers: Print $query array for more request context if(preg_match('#/calendar/(.+?)/?$#i', $query['request']['url'])){ $init = false; } return $init; }
-
Developers: Send an e-mail after every redirection
-
Advanced Usage: If you don’t know how to use filters & actions, please read the official WordPress Plugin API.
// Do something after a redirection add_action('wp404arsp/after_redirect', 'my_404_after_redirect'); function my_404_after_redirect($query){ // Developers: Print $query array for more request context // Send me an e-mail wp_mail( 'my@email.com', 'WP 404 Auto Redirect: New redirection', 'Hi! New redirection from ' . $args['request']['url'] . ' to ' . $query['redirection']['url'], array('Content-Type: text/html; charset=UTF-8') ); return; }
评价
贡献者及开发者
更新日志
1.0.5
- Fix: Escaping URL in Debug Console
- General: Bumped WordPress version to 6.5
1.0.4
- Fix: Security issue
- Fix: Fallback & Preview inputs sanitization
- Improvement: Code formatting and comments
- Improvement: Readme typo, code example formatting and RankMath compatibility
- General: Bumped WordPress version to 6.4
1.0.3
- Improvement: Enhanced search algorithm & matching
1.0.2
- Fix: Request sanitization compatibility for nginx servers
1.0.1
- Fix: Priority exception when it equals 0
- Fix: Settings page link missing from plugins page
1.0
- Added: Log redirections in the /wp-content/debug.log file.
- Added: Expose ‘WP-404-Auto-Redirect’ headers on 404 pages. (Admin).
- Added: Groups & Engines Feature.
- Added: Groups & Engines Documentation & Examples (developers).
- Added: Groups & Engines Admin panel.
- Added: Index.php file redirecting to root domain (avoid plugin folder file listing).
- Added:
action('wp404arsp/search/init', $query)
- Added:
filter('wp404arsp/search/group', $group, $query)
- Added:
filter('wp404arsp/search/query', $query)
- Added:
filter('wp404arsp/search/engine/{engine}', $result, $query, $group)
- Added:
filter('wp404arsp/search/results', $query)
- Added:
filter('wp404arsp/search/redirect', $redirect, $query)
- Improvement: Core reworked from scratch for better extensibility.
- Removed: ‘Hooks’ tab
0.9.0.2
- Fix: Plugin priority set to 999 by debault
- Added: New Filter available
('wp404arsp/init', $init, $request_uri)
- Added: Filters & Actions documentation
- Added: Hooks tab documentation in Administration panel
- Improvement: Plugin’s page description
- Removed: Unnecessary filter
('wp404arsp/settings', $settings)
0.9.0.1
- Fix: Paged request redirection “Uncaught Argument” error
0.9
- Fix: 302 headers option would not save
- Fix: Redirection loop in some specific cases – Direct match on private posts
- Fix: Ajax URL for custom
/wp-admin/
path (Preview Mode) - Added: New Filter available
('wp404arsp/settings', $settings)
- Added: New Filter available
('wp404arsp/redirect', $args, $settings)
- Added: New Action available
('wp404arsp/after_redirect', $args, $settings)
- Added: New page header ‘WP-404-Auto-Redirect: true’ on redirection
- Added: Exclude posts with the post meta:
wp404arsp_no_redirect = 1
from possible redirections. - Added: Exclude terms with the term meta:
wp404arsp_no_redirect = 1
from possible redirections. - Added: Exclude one or multiple taxonomies from possible redirections.
- Added: Disable Taxonomy Redirection – Never redirect to terms archives.
- Added: Plugin priority – Advanced users only (Default 999).
- Improvement: Revamped code
- Improvement: Administration panel with tabs
- Improvement: Plugin is now translation ready
0.7.7
- Fix: PHP header() error on upgrade
- Fix: Exclude Post Type from Redirections UI & Logic
- Fix: ‘Compatibility’ typo in description
- Added: 999 priority on template_redirect action for compatibility
- Improvement: Updated Plugin Screenshot
0.7.6
- Fix: Typos & added better descriptions
- Fix: minor PHP Notice
- Added: “Custom Redirect URL” as Fallback Behavior (Feature Request)
- Added: “Exclude Post Type” Multi-select to possible redirections (Feature Request)
- Improvement: Better overall request validation
0.7.2
- Added: Re-introduced Term search as fallback (if no similar post found)
- Improvement: Direct match algorythm
- Improvement: Sanitization of requests with an extension
- Improvement: Post_type matching to only search “active” post_types
0.7.1
- Fix: Bug while displaying legacy 404
- Fix: PHP notice on preview mode
- Improvement: Post Types handle
- Improvement: Paged request handle
0.7
- Added: Settings page
- Added: Debug mode for administrators (settings page)
- Added: Ability to disable “Redirect to Homepage” if nothing found (Feature request)
- Added: Ability to choose between 301 or 302 HTTP Headers
- Added: Ability preview URL Redirections
- Improvement: Reworked code
0.4.0.2
- Fix: Sanitization bug
- Fix: Debug typo
0.4
- Improvement: Revamped Code
- Improvement: Processing speed
- Improvement: Better Post Type / Category / Taxonomy matching
0.3.2
- Added: Debug monitoring
- Improvement: Better management of paged requests
0.3
- Initial Release