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で確認できます。
[blogcard url=”https://ja.wordpress.org/support/topic/wordpress-5-4-1-%E3%81%8B%E3%82%89%E3%81%AE%E9%9A%9C%E5%AE%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/”]



ご覧いただきありがとうございました!

各種SNS等で活動を行っております。よろしければ併せてフォローしていただけるとうれしいです!
X(旧Twitter)
Instagram
note
SNSではブログでは書けない内容や、管理人のプライベートな情報の発信を行っています。DM等でのご相談も随時承っておりますので、どうぞよろしくお願いいたしますm(__)m

「いいね!」と思ったら、クリックお願いいたします<m(__)m>
にほんブログ村 メンタルヘルスブログ 統合失調症へ 統合失調症ランキング
にほんブログ村 介護ブログ 障がい者福祉・介護へ 障がい者ランキング
にほんブログ村 企業ブログ IT・情報通信業へ IT・通信業ランキング
ABOUT ME
立花浩紀
Web制作を専門とするフリーランスです。就労継続支援B型の職業指導員をしていました。統合失調症の当事者でもあります。福祉ITラボではITと障害福祉を掛け合わせた情報を発信しています。放送大学 心理と教育コース 所属。社会福祉士養成課程。

POSTED COMMENT

  1. 上村ユウ より:

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

  2. Jelly より:

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

COMMENT

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

CAPTCHA