Are you importing posts from another CMS? Do you want to avoid an .htaccess file with a million redirects? Of course you do!
Step 1: store your old pages’ paths in a custom field during your import.
Step 2: adapt this little function to your site. When a user lands on a 404 error, WordPress checks to see if the requested path exists in a custom field. If so, it redirects the user to the correct post.
In this case, my posts imported from Drupal had the old paths stored in the ‘drupal_path’ field. Change your ‘meta_key’ to match your custom field name.
https://gist.github.com/sillybean/8f75af1cb1b0ba4b037616616127586e
Try visiting one of the old URLs. You should be whisked to the new location.
This function also prevents WordPress’s default behavior of trying to guess where to redirect an incorrect URL. If you want WordPress to keep doing that after it has checked for the custom field path, simply remove the “else return false;” lines.
Redirects for HTML Import
Since the HTML Import plugin stores the old URLs, you can use this to redirect your old files to the new WordPress pages:
https://gist.github.com/sillybean/06bd439a6a5b834bf02cec35208d0b39
Note the difference here: parse_url() isn’t used, because in this case the full URL has been stored, not just a relative path.
This works only if you have entered the old URL correctly in the plugin’s settings.
Leave a Reply