ワードプレス:WordPress5.4.1アップデートで記事が表示されない問題の対応方法
4/30の昼頃、WordPress(ワードプレス)のバージョンが「5.4.1」にアップデートされた、というメールが飛んできた。
ちょうどランチタイムだったので表示が崩れていないか確認しようとしたところ、重大な問題を確認。
個別記事の「よく見る」を指定しても、カード型のアーカイブタイプの見出しが表示されるだけ。肝心な本文が見られない状態だった。
ということで、ブログ人生初「ワードプレスのダウングレード」を実施することにした。
結果として、「5.4」にダウングレードすることで解決することができた。
(なぜか一つ前のメジャーバージョン「5.3.3」にダウングレードしても解決しなかった)
また、不具合の原因も確認し、現在では最新バージョン「5.4.1」の状態で個別の記事が見られるようになったので、その方法も書いていきたい。
応急処置:プラグイン「WP Downgrade」で簡単!FTPを使わず即刻バージョンダウングレードで修正
テレワークとはいえランチタイム。時間が限られる中で、不具合の原因等は確認できない。
そんな時に便利なのが「ダウングレード」
バージョンアップで不具合が発生したなら、戻せばいいじゃない論
ということで、FTPを使わずにプラグインでダウングレードできないかな、と探してみたら、ありました神プラグイン。
「WP Downgrade」使い方、設定
Target Versionに戻したいバージョンを入力する(オレンジ枠・上)。今回は「5.4」を設定。
変更を保存ボタンを押す(オレンジ枠・下)
すると、下に「Downgrade Core」ボタンが表示されるので(青枠)そこを押します。
次の画面でインストール画面になるので、そちらでインストールしよう!
※ 万が一の不具合に備えてバックアップはとっておこう!
不具合の原因を確認:パーマリンク設定の日付のみが原因、「postname」や「post_id」が必須に
WordPress 5.4 -> 5.4.1 でclass-wp-query.phpの処理が1つ削られていて、投稿パーマリンクに日時のみを入れている場合にsingleではなくarchive判定になることを確認。 pic.twitter.com/0Pwshd7mnJ
— Kさん@まいぺーす() (@mypacecreator) April 30, 2020
どういうことか。
ワードプレスの「設定」の「パーマリンク設定」においてカスタム構造のパーマリンクに「post_id」や「postname」が入っていないとだめ。(最後に入れることが推奨されている)
ここを日付だけにしている、みたいなことをすると投稿記事は個別記事として見なされず、アーカイブ判定となり、本文が閲覧できないようになってしまうということ。
つまり、元々日付だけで動いていること自体が推奨されていない方法で、今回のアップデートでこのパーマリンク設定のルール厳格化が始まったということらしい。
今回、そもそもセキュリティ系のアップデートなので、パーマリンクのルールを厳格化する必要があったのだと思われる。
そしてこれは今後のアップデートで方針は変わらないことを示している。
なので、今後のアップデートに備えてブロガーで、日付だけにしている人は「パーマリンクの設定変更」が必須になる。
はてなブログからWordPress引っ越し組、全員発生している説
はてなブログのURLは、変更しなければ日付のみの羅列になる。
そのため、はてなブログから引っ越してきたブロガーさんの場合、パーマリンク設定をカスタム構造の日付のみにしている人も多いと思う。
僕もそうだった。
パーマリンク設定を変更 → リダイレクト:プラグイン利用で元のURLに影響を最小限に抑える方法
記事別にURLを設定せずデフォルトで利用している場合、パーマリンク設定の変更はURL変更を伴う。
リンク切れを防ぎたいブロガーにとっては禁忌にも近い行為。
とはいえ、今後のアップデートでこの仕様が変わるとも思えない。
またセキュリティの関係から長い期間アップデートをしない、という選択肢も厳しいため、なるべくURLに影響を与えない形でパーマリンク設定を変更しなくてはいけない。
手動は無理:僕の該当記事は500記事を超える
ちなみに、僕はブログを始めてからワードプレスに引っ越してきた2010年~2019年2月までの記事のほとんどが該当し、パーマリンクを変更すればURLも変更されてしまう記事数は500を超えた。
そこで、変更されてしまう記事を把握するため次の手順で対策を進めようと思った。
- 既存の記事のURL・タイトルをリストで取得
- パーマリンクを設定変更、postnameを入れたカスタム構造にして、WordPressのバージョンを最新にする
- URLが変わった重要な記事について個別でURLを元に戻す
- 残りはリダイレクト対応(旧URLに来た人を新URLに飛ばす)
プラグイン「Export All URLs」既存の記事のURL・タイトルをリストで取得
投稿記事のURL・タイトルの一覧を抜き出すプラグイン「Export All URLs」を発見。
インストールして「ツール」から起動してみると下記のような画面が表示される。
一番上が、記事のタイプ。ALLか固定ページか、投稿記事を選ぶことができる。
「Additonal Date」は抽出項目。今回は「Post ID(投稿ID)」「Title(記事タイトル)」「URL」を抽出する。
「Post Status」は記事の公開設定。自分は非公開記事や下書きは少ない(むしろ、ほぼない)ので公開のみ記事を対象にした。
形式を「CSV」にして実行。
すると、上部にこういうテキストが表示されるので「Click here」をクリックする。
Excelなどで開いてみて、確認しよう
パーマリンク設定を「%postname%」を入れた形で設定、WordPressのバージョンを最新に引き上げる。
僕はこれに変更した。ブロガーにとって恐怖の瞬間。
変更後、WordPressのバージョンを最新版に戻し、ちゃんと各記事が表示されていることを確認する。→された!
変更後のURLリスト:またプラグイン「Export All URLs」を使いURL一覧を取得する
ここで、再度、「Export All URLs」を利用して変更後のリストを取得。
Excel等を用いて、URLが変更された記事についても、どのようなURLに変更されたのかも確認する。
二つのファイルを合わせる。先ほど抽出したURLリストのCSVファイルのURL列欄の隣に、対応するURLを羅列しよう。
二つの表を見比べて、PostIDを軸にvlookup関数を用いて抽出すると早い。
関数が分からなければ、フィルタをかけてポストpostid
なお、この時点で僕の記事は500記事以上のURL変更が必要であることをを確認した。
重要な記事については手動でパーマリンクを個別に再設定
SEOを考えると、リダイレクト頼みにはちょっと抵抗がある。
そこで重要な記事、アクセスが多い記事など、を中心に個別にURLを元のものに再設定した。
(イメージは例としてこの記事を使っております)
大体140件ぐらい行いました。
プラグイン「Redirection」でCSVインポートを使い、記事を一括で(301)リダイレクトさせる
記事を一括でリダイレクトできるプラグイン「Redirection」を利用。
インストール後、「ツール」より起動し、「エクスポート/インポート」を選択。
その前にインポート用のCSVファイルを作成する。
インポート用CSVファイルを作成する
Excel等を利用して一番上の行(1行目)「sorce」(旧URL)「target」(新URL:飛ばし先)の列を設定して、CSVファイルを作成。
対応する列に各対応URLを列挙します。
出来上がったCSVファイルをインポートする。
すると「転送ルール」に追加されているので実際に飛べるか確認しよう。
無事に転送されているなら、もうこれで次のアップデートも怖くないブロガーマンだ!
神プラグインは最強
本当に助かった。一時期は死んだと思いました。
短時間で解決できたのも、神プラグインのおかげ。
このような神プラグインを無償で提供している人達に感謝。
ディスカッション
コメント一覧
まだ、コメントがありません