WordPress

WordPressのバージョン5.4.1においてパーマリンクの設定により投稿ページが表示されない不具合が発生

記事内に商品プロモーションを含む場合があります

2020年4月30日にリリースされた、WordPressバージョン5.4.1において、特定のパーマリンク設定の投稿が表示されなくなる現象が発生しました。今回はこの不具合の概要と対策方法について紹介します。

WordPress 5.4.1で特定のパーマリンク設定の投稿が表示されない

2020年4月30日のWordPressのバージョンアップは、バージョン5.4からバージョン5.4.1へのマイナーアップデートでした。そのため多くのWordPressサイトでは、自動的に更新されてしまい、この不具合がなぜ発生したのか、わかりにくかったと思います。

具体的な不具合の内容ですが、

投稿ページにアクセスすると、投稿の詳細ページ(single.php)ではなくアーカイブページ(archive.php)が表示されてしまう

というものです。なぜこのような現象が発生してしまうのでしょうか。

投稿ページがアーカイブ判定されてしまう条件

WordPressバージョン5.4.1で投稿ページがアーカイブ判定されてしまう条件はズバリ、

パーマリンク設定に年・月・日・時・分・秒のパラメータしか使っていない

です。もう少し具体的に見てみましょう。まずWordPressの管理画面から、「設定」⇒「パーマリンク設定」を開きます。

パーマリンク設定

ここでパーマリンクの共通設定が「カスタム構造」になっているか確認します。

カスタム構造

上の画像で「ここをチェック」の部分が「年・月・日・時・分・秒」だけのパラメータで構成されている場合、投稿ページがアーカイブ判定されてしまいます。具体的にはこんな状態。

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

私は上記の設定でパーマリンクを設定していました。このように設定していると、

https://domain/2020/05/01/123040/

このようなパーマリンクで投稿ページが表示されていました。しかしこれが投稿ページではなく、アーカイブページと判定されてしまうようになったのが、WordPressバージョン5.4.1です。

通常、WordPressの投稿は「single.php」というテンプレートファイルで表示されるのですが、それが「archive.php」というテンプレートで表示されてしまう状態です。

ちなみに、はてなブログからWordPressへ移行した人は、

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

このように先頭に「/entry」とついているかもしれません。この場合も投稿ページがアーカイブ判定されてしまいます。

これでは検索エンジンから投稿ページに訪問した人にアーカイブ判定された投稿ページが表示されてしまいます。

2020年5月1日現在では、パーマリンクを維持したまま表示されるように修正するためには、WordPressをバージョン5.4.1からバージョン5.4にダウングレードするしかありません。しかしこれはプラグインを使えば、簡単にできるので、その方法を紹介します。

WordPressをバージョン5.4にダウングレードする方法

WordPressをバージョン5.4にダウングレードするには、プラグイン「WP Downgrade Specific Core Version」を使います。これはWordPressの公式プラグインなので、管理画面からインストールできます。

WP Downgrade Specific Core Version

プラグインのインストールと有効化が済んだら、「設定」⇒「WP Downgrade」メニューをクリックします。

WP Downgrade

「WP Downgrade Options」が表示されます。

WP Downgrade Options

「WordPress Target Version」に「5.4」と入力して「Up-/Downgrade Core」ボタンをクリックします。

WordPressの更新

「WordPressの更新」画面に遷移します。ここで「再インストール」をクリックします。これでWordPressのバージョンが5.4にダウングレードします。

WordPress 5.4にダウングレード成功

このような画面が表示されたら、ダウングレード成功です。

これで、これまでのパーマリンク設定でも投稿ページが表示されるようになります。

今後修正される見込みはあるか?

さて、WordPressバージョン5.4.1での修正ですが、これはバグではなく仕様と考えた方が良さそうです

というのも、本来パーマリンクというのは他のページと重複しないユニークなものであるからです。

今回この不具合に遭遇した人は、パーマリンク設定に「年・月・日・時・分・秒」のパラメータしか使っていませんでした。つまり記事の投稿日時が同じ2つ以上の記事が存在した場合、このパーマリンク設定では、どの記事を表示したら良いのかわからなくなってしまいます。このような投稿は、予約投稿機能を使うと簡単に作れてしまいます。

このような事態を防ぐために、WordPressのドキュメントでは、パーマリンク設定に「post_id」か「postname」を使用することを要求しています。「post_id」はWordPressが投稿をシステムで管理するためのユニークなIDであり、「postname」は投稿につけられたユニークな文字列だからです。

WordPressのパーマリンク設定

というわけで、どうやら今回のパーマリンク設定の処理の変更が元に修正される可能性は低そうです。

この機にユニークなパーマリンク設定にした方が良い

仕方がないので、私はこの機会にパーマリンク設定を見直して確実にユニークになるように設定を変更しました。

これまで
/%year%/%monthnum%/%day%/%hour%%minute%%second%/

これから
/%year%/%monthnum%/%day%/%hour%%minute%%second%/%post_id%/

パーマリンクの末尾に記事IDの「%post_id%/」を追加しただけです。

これでWordPressのバージョンを最新に維持した状態で、投稿ページが正常に表示されます。パーマリンクは変わってしまいましたが・・・

本来ならば、旧パーマリンクにアクセスされたときに新パーマリンクへの301リダイレクト処理を追加するのがベストです。もうここまでの作業で疲れてしまったので、今日はここまでということで。

リダイレクト処理が簡単にできる方法がわかったら、また後日ブログで紹介します。

【2020年5月11日追記】
今回の修正について、詳しい人のお話を以下のURLで確認できます。

===

コレカラウェブではWebライティングのお仕事を承っております。豊富な実務経験や国家資格を生かして、SEOに強い完全オリジナルな文章を作成いたします。公式noteにてポートフォリオを掲載していますので、こちらも併せてご覧ください。ご相談・ご依頼はお問い合わせページからお願いいたします!

「いいね!」と思ったら、クリックお願いいたします<m(__)m>
にほんブログ村 小遣いブログ Webライター・ブログライターへ にほんブログ村 IT技術ブログ SEO・SEMへ にほんブログ村 小遣いブログ ブログアフィリエイトへ
ABOUT ME
らぐち
コレカラブログ管理人のらぐちです。コレカラウェブという屋号でフリーランスとして、Webライティング・SEOコンサルティング・メディア運営・障害者支援のお仕事を一貫して承ってきました。このブログではコレカラウェブのお仕事で得たノウハウやテクニックを詳しく紹介しています。

POSTED COMMENT

  1. 上村ユウ より:

    こんにちは。
    WPのパーマリンク、変な表示になることがありましたので、助かりました。
    また、簡単にできる方法がありましたら教えてください。

  2. Jelly より:

    どんぴしゃの内容で困っていました。
    非常に助かりました!ありがとうございます!

COMMENT

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

CAPTCHA