けい坊の日記

ドラクエ好きによるドラクエのプレイ記録。

ブログ管理

【WordPress】はてなブログ式パーマリンクが使えなくなった

投稿日:

唐突ですがWordPressの話。

少し前まで、移転前のはてなブログと同じ形式のパーマリンクを使っていたのですが、それが急に使えなくなるという事象がありました。

その原因と対策について、書き残しておこうという記事です。

事象

はてなブログから移転する際、リダイレクト設定を容易にするためにパーマリンクの形式をはてなブログと同じにしていました。下記のようなものです。

/entry/%year%/%monthnum%/%day%/%hour%%minute%%second%/

従来はこれで問題なかったのですが、今年の5月初めごろ、急にこの形式のリンクが機能しなくなるという事象が発生しました。

具体的に言うと、個別投稿ページではなくアーカイブページが表示されるようになってしまいました。

今までこう表示されていたものが…

こうなってしまった

原因

色々調べたところ、WordPress5.4.1へのアップデート時の仕様変更によるものだということが判明しました。

WordPressのフォーラムに同様の症状になった方の投稿があり、参考になりました。

/wp-includes/class-wp-query.phpの実装が変わり、個別記事ページの判定方法が変更されたようです。

以前は、はてなブログのリンク形式のように投稿日時を秒数まで指定することで個別投稿ページと判定される処理でしたが、アップデートによりそれが撤廃され、投稿タイトルや投稿IDをリンクに含めることが必須となっていました。

個別投稿ページと判定される条件が厳格化された結果、上記のようにアーカイブページとなってしまったということです。

暫定対策

/wp-includes/class-wp-query.phpをアップデート前のバージョンに戻してやることで対処できました。

実際、この状態で2ヶ月くらい運用していたのですが、WordPressの方針に沿わないパーマリンクを使い続けるのもよろしくないと思い、本格対策を行うことにしました。

本格対策

まずは、パーマリンク設定を変更。シンプルに投稿IDだけのURLになるようにしました。

/%post_id%/

次に、元々のはてなブログ形式のURLから、新しいURLへリダイレクトする設定を行いました。

リダイレクト設定の方法はいろいろあると思いますが、最も手っ取り早く、Redirectionというプラグインを使うことにしました。リダイレクト元のURLとリダイレクト先のURLを対応づけるCSVを作ってインポートするだけなので、非常に簡単です。

各記事に対応する%post_id%の値は、データベースを直接参照して取得するのが早かったです。MySQLにログインして、postsテーブルからIDとpost_nameを取得すればOK。

リダイレクトの設定が完了したら、/wp-includes/class-wp-query.phpを最新版にアップデート。そして、旧URLにアクセスして新URLにリダイレクトされていることを確認して作業完了しました。

-ブログ管理

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

賀正2020

あけましておめでとうございます。本年もよろしくお願い申し上げます。 今年の目標設定をしていきましょう。 ゲーム DQ11S RTAチャート作成・プレイ実行 昨年のやり残し。これは早いうちにやり遂げたい …