WP 404 Auto Redirect to Similar Post

Описание

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! 🙂

Скриншоты

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

Установка

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!

Часто задаваемые вопросы

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 ' . $query['request']['url'] . ' to ' . $query['redirect']['url'], 
        array('Content-Type: text/html; charset=UTF-8')
    );

}

Отзывы

30.10.2019
... and is highly customizeable. It saves a lot of time if you have to take care of many 404 pages.
22.10.2019
Installed this about a week ago, set my fallback page to my custom 404 page, tried a few ‘search’ terms in my url’s, and lo and behold, you get immediately redirected to the nearest matched page! Just like it says on the tin! I wasn't too happy with there being no logs though, as how do you prove that something like this works without them? So I just grabbed the code from the FAQ section that sends emails on rediredtions, Mr @hwk-fr changed a line of code that wasn't working properly, and bunged the whole lot into Code Snippets plugin. After checking the newly found redirections, I could indeed see that it was working properly, so all that's left to do now is grab a coffee and snuggle up on the sofa, knowing that all viewers to my website were getting redirected to similar posts and pages. Height of laziness, and some great support to attain it!
13.10.2019
Searched and examined support forums of various 404 redirect plugins. This one seemed like a good contender. Installed and redirected domain to clients new website. It found various (correct!) replacement posts for old 404s. Great work!
01.10.2019
You can spend hours or even days setting up the best URL to link to... or you can add this plugin. It would be even better if it defaulted to pages first then to posts, but this is a major time saver. I recommend using standard 301 redirects for all of the important pages then install this plugin to FIX the rest!
Посмотреть все 78 отзывов

Участники и разработчики

«WP 404 Auto Redirect to Similar Post» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

Перевести «WP 404 Auto Redirect to Similar Post» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

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