デザインのリニューアルに合わせてパーマリンク設定も変えたのですが、検索エンジンや外部被リンクは旧パーマリンクなわけで、そこからアクセスしてきた人は404エラーになってしまい問題です。
そこで旧パーマリンクから新パーマリンクにリダイレクトさせようと思い、ぐぐったのですがプラグインによる方法が殆どで、しかもそのプラグインあんまり更新されていないようなので使うのに気が引ける。
ということで、関数を作ってしまおうと思い立ったわけです。で、テーマのfunctions.phpに入れておけば万事解決。
ちなみに旧パーマリンクは
/archives/%post_id%/
新パーマリンクは
/%post_id%/
です。
というわけで作った関数
function redirect404() { if ( is_404() ) { // 404Errorの時 $id = str_replace( 'engineer', '', $_SERVER['REQUEST_URI']); // リクエストURIから要らない部分を切り出す① $id = str_replace( 'archives', '', $id); // リクエストURIから要らない部分を切り出す② $id = str_replace( '/', '', $id); // リクエストURIから要らない部分を切り出す③ if ( preg_match( '/^d+$/', $id ) ) { wp_redirect( get_permalink( $id ), 301 ); // 残ったPostIDを使ってリダイレクト処理 exit; } } } add_action( 'wp', 'redirect404' );
こんな感じ
やっつけで作りましたが動いているのでOK。旧パーマリンクでPostID使っていた場合は同じようなことができると思います。