Using WordPress ‘old_slug_redirect_url’ PHP filter

The old_slug_redirect_url WordPress PHP filter allows you to modify the redirect URL when the old slug is changed.

Usage

add_filter('old_slug_redirect_url', 'your_custom_function', 10, 1);

function your_custom_function($link) {
    // your custom code here
    return $link;
}

Parameters

  • $link (string) – The original redirect URL.

More information

See WordPress Developer Resources: old_slug_redirect_url

Examples

Append a query string to the redirect URL

Modify the redirect URL by appending a query string to track redirects from old slugs.

add_filter('old_slug_redirect_url', 'append_query_string', 10, 1);

function append_query_string($link) {
    $link .= '?source=old_slug';
    return $link;
}

Redirect to a custom URL

Redirect users to a custom URL instead of the default redirect URL.

add_filter('old_slug_redirect_url', 'custom_redirect_url', 10, 1);

function custom_redirect_url($link) {
    $custom_url = 'https://example.com/redirect-page';
    return $custom_url;
}

Redirect to the home page

Redirect users to the home page when the old slug is accessed.

add_filter('old_slug_redirect_url', 'redirect_to_home_page', 10, 1);

function redirect_to_home_page($link) {
    return home_url();
}

Add a custom slug prefix

Add a custom prefix to the redirect URL to differentiate between old and new slugs.

add_filter('old_slug_redirect_url', 'add_custom_slug_prefix', 10, 1);

function add_custom_slug_prefix($link) {
    $prefix = 'old-';
    $link = str_replace(home_url(), home_url() . '/' . $prefix, $link);
    return $link;
}

Prevent redirection for a specific old slug

Prevent redirection if the old slug matches a specific value and redirect to the home page instead.

add_filter('old_slug_redirect_url', 'prevent_specific_old_slug_redirection', 10, 1);

function prevent_specific_old_slug_redirection($link) {
    $blocked_slug = 'blocked-slug';
    if (strpos($link, $blocked_slug) !== false) {
        return home_url();
    }
    return $link;
}