WP 404 Auto Redirect to Similar Post

Deskripzioa

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:

  1. Fix URL
    Find and fix common URL mistakes.

  2. Direct Match
    Search for a Post that perfectly match keywords.

  3. Search Post
    Search for a similar Post.

  4. Search Term
    Search for a similar Term.

  5. 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! πŸ™‚

Pantaila-argazkiak

  • Admin: Settings Page
  • Admin: Post Types
  • Admin: Taxonomies
  • Admin: Engines
  • Front: Debug Console

Instalazioa

WordPress Install

  1. 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.
  2. Activate the plugin through the ‘Plugins’ screen in WordPress.
  3. Go to Settings > WP 404 Auto Redirect to change your settings.
  4. Everything is ready! Now try to trigger a 404 page!

MEG

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;
}

Berrikuspenak

2024(e)ko ekainaren 20(a)
What an amazing plugin. Install it, and your 404 problems disappear…and I don’t mean just hidden…they are now MANAGED by intelligent redirection to appropriate content. Set it and forget it. This plugin made me look like a HERO to my client who bungled their URL’s during a mass import. Fixed them in 5 minutes over the phone.
2024(e)ko ekainaren 11(a)
I run an online shop and the products change often. If I delete products, the customer ends up on a 404 page. Now, the plugin redirects the customer to a similar product page. Most of the time the selection is very good. As a fallback, I was able to enter a self-designed 404 landing page. This is how GOOGLE loves me again. Renata from gesunde-geschenke.com
2024(e)ko maiatzaren 3(a) 2 replies
It does what it promises. I thought it messes up google search console but it are probably due other reasons independent on this plugin. Thank u for the explanation and sorry for the wrong bad rating.
2022(e)ko abenduaren 24(a)
Wordfence says: The Plugin “WP 404 Auto Redirect to Similar Post” appears to be abandoned (updated 12. June 2020, tested to WP 5.4.12).
Irakurri 106 berrikuspenak

Laguntzaileak eta Garatzaileak

“WP 404 Auto Redirect to Similar Post” software librea da. Ondoko pertsonek egin dizkiote ekarpenak plugin honi.

Laguntzaileak

Aldaketen loga

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