Redirect a page based on last word in slug

I have a couple custom post types registered = Staff, Properties

If I have a page with the slug archive-staff, how can I automatically redirect that page to the Staff CPT archive page with a php function?

This should also work for any page that starts with “archive-“, automatically redirecting to the archive of any registered custom post type that matches the 2nd word of the slug.

So the custom archive-staff page would redirect to the Staff CPT archive page.

The custom archive-properties page would redirect to the Properties CPT archive page.

…and so on for for all custom post types only if their corresponding custom page exists.

1 Answer
1

There are many solutions for that..

1. .htaccess rules

You can put some redirect rules in your .htaccess file:

RewriteRule ^(.*)\-staff/$ /staff/? [L,R=301]
// some other rules

2. Using WordPress hooks

function my_redirect_function() {
    global $wp;

    if ( preg_match( '@staff/?$@', $wp->request ) ) {
        wp_redirect( get_post_type_archive_link( 'staff' ) );
        die;
    }

    // ... put other rules in here
}
add_action( 'template_redirect', 'my_redirect_function' );

3. Using Redirection plugin

You can use that plugin and define custom redirects based on regular expressions.

Leave a Comment