このブログはWordPressというブログ用のシステムを利用して運営しています。まぁ、WordPressはこの記事にたどり着いた方ならまず知っているでしょう。
2020年4月30日にリリースされたWordPressの現時点(同年5月17日)での最新版であるバージョン5.4.1で、一部のブログで投稿ページ(記事)が表示されない不具合が発生しています。要はコンテンツがまったく表示されない状態になってしまうわけで、ブログの運営者からしたらとんでもない問題です。
当ブログこの不具合に遭遇し、2週間くらい記事が表示されていなかったようです。おかげでGoogleのインデックスからも削除されてしまったようで、検索アクセスは一桁という悲惨な状態になってしまいました。

この不具合はすでにいろんなところで紹介されているのですが、多くの場合はWordPressのバージョンをダウングレードすれば解決するようです。しかし、このブログの場合はダウングレードでは解決せず、別の解決法で問題が解消しました。もしかすると同じ症状の方もいらっしゃるかもしれないので、僕の解決までの流れを紹介します。
WordPress(5.4.1)へのアップデートで投稿ページ(記事)が表示されない不具合が発生!
WordPressの現時点(同年5月17日)での最新版であるバージョン5.4.1で、特定のパーマリンク設定の場合に、投稿ページ(記事)を表示しようとすると、投稿ページではなくアーカイブページが表示されるという不具合が発生しています。
実はこれは不具合ではなく、どうも仕様変更なのではないかとも考えられるのですが、これについては後で書きます。
投稿ページが表示されなくなる条件はパーマリンク設定に年・月・日・時・分・秒の時間に関するパラメータしか使っていない場合です。

パーマリンク設定はダッシュボードの上の画面で設定する項目ですね。この設定により、ブログの各ページのURLが自動的に決まります。
例えば基本を選んだ場合には、
https://(ブログトップのURL)/?p=123
という設定になります。=より後ろの123はページごとに振られる記事IDの例です。新しい記事を投稿するとこのルールによって投稿ページ(記事)のURLが振られるわけですね。
それで、このパーマリンク設定でカスタム構造を選択して、自由に入力できるブログトップのURL以降のところに、年・月・日・時・分・秒の時間に関するパラメータと固定の文字列しか使っていない場合に投稿ページが表示されなくなってしまいます。
このブログはもともとはてなブログで運営していたものをWordPressに移行してきました。はてなブログでもWordPressのパーマリンク設定のようにURLのルールを設定することができますが、標準では下のような設定です。WordPressに移行したときにURLが変わらないようにこれに合わせたのです。
/entry/%year%/%monthnum%/%day%/%hour%%minute%%second%
上のパーマリンク設定では年・月・日・時・分・秒の時間に関するパラメータと固定の文字列(entry)しか使っていません。このため、投稿ページが表示されなくなってしまったのです。
投稿ページ(記事)が表示されない不具合の解決までの流れ
多くのブログではWordPressのダウングレードで解決!
僕のブログの場合、はてなブログからWordPressに移行したときの設定が原因で投稿ページが表示されない不具合が発生してしまいました。僕と同じようにはてなブログから移行したブログの多くで不具合が発生していたようです。
同じ不具合が出ていた方の多くはWordPressのバージョンをダウングレードで表示されるようになったそうです。WordPressのダウングレードはプラグインでかんたんにできますので試してみる価値はあると思います。
ダウングレードを試す方は次のページが参考になると思います。
FTPソフト不要。WordPressを簡単にダウングレードするプラグイン「WP Downgrade Specific Core Version」(外部リンク)
しかし、僕の場合はダウングレード後も同じ症状でした。ダウングレードするときに5.4.1から5.4.0ではなく、一旦5.3までメジャーダウングレードしたせいかもしれません。ダウングレードで解決した方は5.4.0にダウングレードしたようです。
ただ、後で書きますが、今回の特定のパーマリンク設定で投稿ページが表示されない問題は不具合ではなく仕様変更の可能性があります。そうすると、ダウングレードで対応した場合には、今後ずっとアップデートができなくなります。そのため、次の項で紹介するパーマリンク設定の変更の対応のほうが長い目では良いかもしれません。
パーマリンク設定を見直して解決!
ここまで説明してきたように、今回の不具合は特定のパーマリンク設定で投稿ページが表示されないというものです。なのでパーマリンク設定を変更すれば投稿ページが表示されるようになります。
しかし、パーマリンク設定を変更すると投稿ページなどの各ページのURLが変わってしまいます。URLが変わってしまうと、せっかくブログの記事を紹介してリンクをしてくれているサイトがあってもリンク切れになってしまいますし、検索から来たら記事が表示されないなんてこともありえます。
そこで、URLを変更すると同時に元のURLから新しいURLに301リダイレクトの設定を行います。301リダイレクトというのは元のURLへのアクセスに対してURLの変更を教えて転送する設定です。
ネット上の情報では「Permalink Redirect」というプラグインを使う方法がよく解説されているのですが、いつ頃からか、WordPressプラグインディレクトリから消えてしまいダウンロードできなくなっています。
そこで、多少作業は必要ですが、スムーズにいけば10分くらい(僕の体感)の作業で設定できる方法を紹介しているページを見つけたので紹介しておきます。
【意外と簡単】ワードプレスのパーマリンクを変更しリダイレクトする(外部リンク)
上のページで紹介されている方法は各投稿ページの情報をCSVでダウンロードして、元のパーマリンク設定と変更後のパーマリンク設定で生成されるURLの一覧を作成し、それを元に301リダイレクトのルールをインポートするというものです。
僕も上の方法でパーマリンク設定を記事IDにしてきちんと301リダイレクトが設定できました。
特定のパーマリンク設定で投稿ページが表示されないのは不具合ではない?
特定のパーマリンク設定の場合に、投稿ページ(記事)が表示されない問題。投稿ページが表示されなくなったブログの運営者からすると大問題ですが、どうやら不具合ではなく仕様変更なのかもしれません。
というのも、WordPressのドキュメントでは、パーマリンク設定に「post_id(記事ID)」か「postname(記事タイトル)」を使用することを要求しているからです。
パーマリンク設定に年・月・日・時・分・秒の時間に関するパラメータしか使っていない場合、同じ時間に2つの記事を投稿すると、URLが同じになってしまいます。同じ時間に投稿する可能性なんかあるのかと思われそうですが、予約投稿の場合にはありえますよね。
そのため、「post_id(記事ID)」か「postname(記事タイトル)」を使わないといけないということなのです。
WordPress.org日本語のサイトでは次のように書かれています。
構造は必ず %post_id% あるいは %postname% で終了し、各パーマリンクが個々の投稿を指すようにしてください (例 /%year%/%monthnum%/%day%/%postname%/ )。
WordPress.org日本語
つまり、パーマリンク設定に年・月・日・時・分・秒の時間に関するパラメータしか使っていないのはもともとルール違反なんですよね。なので、今回のバージョンアップでそうした使い方ができないようにしたと。そういうことなのかもしれません。
なので、できればダウングレードでごまかすのではなく、これを機会に「post_id(記事ID)」か「postname(記事タイトル)」を使ったパーマリンク設定に変更すると良いのではないでしょうか。
まとめ
Google Analyticsをみたらブログのアクセス数が1桁まで減っていたので焦りました。Googleの変動が話題になっていた時期だったのでもしや圏外に飛ばされたか、それともなにかGoogleの気に障るようなことがあってペナルティを受けたのかとびっくりしました。まぁ、まだこれでアクセスが戻ってくるのかは不明なのですけどね(^_^;)
とにかく、僕と同じようなトラブルにあっていた方は少しでも参考になればと思います。