見出し画像

WordPress5.4.1アプデの結果日時形式パーマリンクが非表示になる不具合が発生。原因と対策とは(WordPressでは書けないブログ運営論#14)

一ヶ月遅れの話題で恐縮ですが、2020/4/30にあったWordPress5.4.1アップデートでパーマリンク日時形式のブログでは投稿が非表示になる事象があったと知りました。(仕様を厳密化したことが原因のようですが、影響が出ているブログが多数あるため不具合と表記しています。)

Darwin LaganzonによるPixabayからの画像)

自分のWordPressブログの場合、4/30に5.4.1に更新して特に何も起きず、気付かなかったのですが、検索するとかなりのブログで影響が出ていたことが分かりました。

WordPressにとって投稿記事は自分が時間と精力をつぎ込んで築いてきた大切な資産であり、これまで苦労してGoogle検索評価を維持してきた記事がインデックスから外されるとなると、影響は甚大と言えます。

今回は、備忘録代わりとして記載しておきます。
また自分のWordPressブログがなぜ影響が出ず回避できたのかも記します。

詳細を記述したブログは沢山あるため、検索で確認下さい。
【検索ワード例】
「wordpress 5.4.1 不具合 パーマリンク」

不具合の詳細

(検索でざっと調べただけなので間違っていたらすみません)

記事のパーマリンク形式を「年月日時分秒」にしている場合、バージョン5.4までは正常に表示されていたが、バージョン5.4.1からはArchivesページとして表示されてしまう

【該当するパーマリンク形式の一例】

https://○○○.com/%year%%monthnum%%day%%hour%%minute%%second%

不具合の発生原因

・WordPress5.4まで
パーマリンクを「年月日時分秒」のみで設定していた場合
single.phpで表示される
(普通の投稿ページとして表示)

・WordPress5.4.1アップデート後
パーマリンクを「年月日時分秒」のみで設定していた場合
archive.phpで表示されるように変更された
(普通の投稿ページとして表示されずArchivesページとして表示され、記事の中身が見れない)

■不具合が起きる形式のパーマリンク

/%day%/%hour%%minute%%second%

■不具合が起きない形式のパーマリンク

%post_id%
%postname%

原因
WordPress5.4.1アップデートで、class-wp-query.phpの処理が削除されたことで、パーマリンクが日時のみ形式の場合に、singleでなくarchiveと判定されてしまうため。

・理由
セキュリティ対策関連の修正(5.4.1もセキュリティアップデートである)
パーマリンクに年月日時分秒のパラメータのみの場合、同時間に2つの記事が投稿されるとURLが同じ記事が複数作成される。
一方の記事を非公開にしても、もう一方の記事が参照される不具合が生じる。
そのため時分秒でパーマリンクを指定している記事はアーカイブを表示するように修正された。

・影響例
 ・記事が非表示になる
 ・Googleのインデックスから外される
 ・アクセス数が顕著に減る

・対策例
 ・5.4以前にWordPress本体をダウングレードする。(一時的)
 ・パーマリンク設定を変更した上で、一括で新URLにリダイレクトをかける。(恒久的)
リダイレクトプラグインでリダイレクトさせるか、functions.phpに自分でリダイレクト処理を書いて対応したという記事もあります。

・参考記事
こちらではパーマリンク変更とリダイレクトについて詳細に設定方法が書いてあります。

自分のWordPressはどうだったか

現在のパーマリンクは「投稿名」「○○○.com/sample-post/」の「/%postname%/」の形式だったため、被害を免れていました。
一応クロームシークレットモードで全てURLを確認し、表示されていました。

しかし、はてなブログからのWordPressへ移行時は年月日時分秒形式で移行していたため、過去偶々行った別の対策でパーマリンク形式を変えていたため、影響を免れていたようでした。

はてなブログからWordPressへ移行したブログで被害が出ていた

今回、影響があったブログははてなブログからWordPressへ移行したブログが多かったようです。

はてなブログでは標準の投稿形式が以下のパーマリンク形式になっています。

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

例えば2020年6月1日8時30分45秒に投稿した記事のURLは以下になります。

entry/2020/06/01/083045

自分もはてなブログからWordPressへの移行ですが、はてなブログ使用時に標準形式で投稿していたため、2017年までの記事は全て以下の形式でした。

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

よって、何も対策していなければ、今回の5.4.1アップデートの影響を受けていたと思います。

はてなブログからWordPressへの移行作業で、パーマリンクをどう設定したかについては、以下の記事に詳細を書いています。

はてなブログからWordPressへの移行作業(2017年)

2017年以後、WordPress移行後の投稿記事は全て「entry/2020/06/01/スラッグ名」の形式で投稿していました。以下の形式です。

/entry/%year%/%monthnum%/%day%/%postname%

「entry/yyyy/mm/dd/hhmmss」形式にしていたのは、はてなブログ時代に書いた過去記事との整合性を取るためでした。

その後、2019年にレンタルサーバー移行前にパーマリンク形式をシンプルにしておくため(レンタルサーバー移行作業で問題が起きないように)
「%postname%」形式にパーマリンクを変更しました。
今回、5.4.1の影響を免れたのはこの変更をしていたためでした。

%postname%

またこれまでの記事で「entry/yyyy/mm/dd」が付いているものは301リダイレクトで「%postname%」だけを参照するように設定を変更していました。

パーマリンク形式の変更作業(2019年)

wwwなしURLへの正規化作業(2019年)

以前のnote投稿で、「WordPressは環境の変化に強いブログ」と書きましたが、WordPressでは「運営会社」というものがなく、アップデートが自己責任になる以上、こうした問題も起き得るため、WordPressを運営する場合は、普段から情報収集や最低限のリカバリーができる程度に自分の体制を作っておく事は必要だと改めて感じました。

いつもWordPress更新前はバックアップを取って行っていますが、特に問題が起きたことはないため、4/30の5.4.1アップデートも特に不具合情報を調べることなく行っていました。
が、今回こうしたことがあると分かったため、今後はアップデートでの影響を調べてから更新を行おうと思います。

無料ブログからWordPressへ移行を考えている人へのアドバイス

無料ブログ(はてなブログなど)からWordPressへの移行を考えている人へのアドバイスとしては、パーマリンク形式は投稿名(%postname%)形式にしておくのが安定です。無料ブログでは、投稿名(%postname%)形式で投稿しておくのがいいと思います。

例)はてなブログでは「カスタムURL形式」に設定して記事を投稿する(=標準形式で投稿しない)

(もっと言うと、無料ブログからの移行は行わず最初からWordPressのみでブログ開設するのがお奨めです・・)

Googleフォト画像が非表示になる不具合(5.4.1とは無関係)

5.4.1関連の影響はなかったのですが、Googleフォト画像が非表示になるという別の不具合が見つかり、そちらの対応に追われています。

はてなブログからの移行時に、投稿記事の画像を全て移行するのは大変なため、はてなブログの標準画像クラウドであるはてなフォトライフを使わず、Googleフォトに画像を入れて表示させ、その状態でWordPressに移行していましたが、Googleフォト画像が非表示という事象が発生し、画像を結局WordPressのレンタルサーバー側に全て再アップするという状況になってしまいました。

2017年から2020年までは問題なく表示されていましたが、2020年5月末にある記事のGoogleフォト参照している画像が非表示になっていたため気付きました。
Googleフォトも仕様が頻繁に変更されているため、念のために2019年以後は全てレンタルサーバーに画像をアップしていましたが、Googleフォトに本当に問題が起きるとは思いませんでした。

今回の記事の話題と離れるため詳しくは書きませんが、当面は画像の移行作業が必要です。

公開記事が数100なのでまだ作業ができる範囲ですが、WordPressは何か問題が起きるたびに一つ一つ記事を修正する膨大な作業が発生するため、余り投稿記事を増やすのも最近では考え物かと思っています。

シリーズ一覧


いいなと思ったら応援しよう!

G@MERZ:NOTE
いつもお読みくださり有難うございます!サポートいただければ励みになります!