テーマ変更、アドレス変更に次ぐ、サイト修正第3弾。なんとWordPressのパーマリンク設定を変更だ。
このサイトは、パーマリンク設定で「数字ベース」 ( https://nigauri.me/archives/ページID )にしていて、元々アクセス数も少ないし特に気にしていなかったので何年もそのままにしてたんだけど、少し前からSEOプラグインが「数字ベースはやめて投稿名を使うのだ!!」と注意をしてくるようになった。
それでもまだしばらく放置してたんだけど、設定で消すこともできず非常にうざくどうしても邪魔になるので、さすがのオレもいよいよ重い腰を上げたのだった。
スラッグの修正
さて、まずは全ての記事の「スラッグ」を変更していく。
投稿一覧の「クイック編集」で日本語名のスラッグを半角英数などに置き換えていく、手動で。
その際、どの投稿がどんなスラッグなのかを見やすくして作業効率を上げるために、functions.php に以下を追加して投稿一覧にスラッグを表示させるようにする。
add_filter( 'manage_posts_columns', 'custom_post_column_title' );
function custom_post_column_title( $columns ) {
$columns[ 'slug' ] = "スラッグ";
return $columns;
}
add_action( 'manage_posts_custom_column', 'custom_post_column', 10, 2 );
function custom_post_column( $column_name, $post_id ) {
if( $column_name == 'slug' ) {
$post = get_post( $post_id );
$slug = $post->post_name;
echo esc_attr( $slug );
}
}これ、インポートか何かで一括で修正する機能がほしい…。
仕事の合間合間にちまちまやっていたので、2000記事を修正するのに5日くらいかかりました。もう最後の方は英訳とかせずにローマ字で適当に作った。
この作業を終えたら一覧にスラッグを出す意味はなくなるので、上記のコードを消して元に戻しておく。
パーマリンク設定の変更
管理画面の「設定>パーマリンク設定」で投稿名を使うやつに変更して保存する。「本番の Web サイトでは決して実行しないでください」とか書いてあるけど変えるったら変える。

これでURL自体は置き換わった(英数字の方のURLでアクセス可能になった)けど、このままだと旧URL(ページ番号を使ってたやつ)でアクセスした時に 404 not found になってしまうので、リダイレクト(301)の設定を行う。
リダイレクト設定
WordPressの場合は「Redirection」プラグインなどを使えば良い。一括でインポートできるのでめちゃくちゃ楽チン。
Redirection – WordPress プラグイン | WordPress.org 日本語
「Export any WordPress data to XML/CSV」プラグイン等でIDとスラッグをダウンロードしておけば、インポート用のファイルも簡単に作れる。ただし作業終了後はいらなくなるのでプラグインを削除しておく。
Export any WordPress data to XML/CSV – WordPress プラグイン | WordPress.org 日本語
記事内のURLの修正
あとは、記事内で他記事にリンクしている部分などを書き換える。基本的にはリダイレクトされてリンク切れにはならないはずだけど、変えておいたほうが後々いろいろと楽になると思うし、一部プラグイン(ショートコード)では正常に動かなかったりもしたので。
ちなみにこの作業に1日かかりました。
サイトマップの送信
一応GoogleサーチコンソールにサイトマップXMLを送信して、新URLでのクロールをうながしておく。
これで本当に全部終わり。
おわり
ということで修正完了。
このサイトは元々Ploneを使っていて、その時のURLをWordPressのURLにリダイレクトをかけていたから結構入り組んでいる…と思いきや、もう時が経ちすぎてPlone時代のURLでのアクセスはまったくないので問題ないのであった。
みんなも数字ベースにするのはやめておこうね。後で変えるのめんどくせえから…。