ウェブサイトを運営していると、ある時になって、以前に作ったページの内容をガラっと変えたい、変えなければならない。という場面に直面することがあります。またページのURLはそのままで、更新したい。というのも少なくないケースとしてあると思います。
このような場合にやるべきことは下記の3つになります。
- ページの次バージョンの、ドラフト版の作成
- ドラフト版の関係者レビュー
- ドラフト版を正式URLで公開
静的に管理しているウェブサイトであれば、上記の手順は単純に進行することができます。
しかしWordPressでは案外これが難しいのです。
難しくしている理由
- WordPressでは公開中のポストへの編集/保存は、即時公開となってしまう。
(ページ内容を大幅に改変する際、制作途中の内容を保存したり、公開前にレビューすることができない) - 静的htmlをFTPで上書きするように、別のポストで既存ポストの内容を上書きするような機能は無い。
- 即座にURL(スラッグ)をスワップするような機能は無い。
上記のcを手動で強引にやってしまうこともできますが、そのためには、
- 公開中ポストのURLスラッグを、元のURLとは違うものに変更/保存してから
- 新たなポストに元のURLスラッグを指定する
必要があり、
この方法だと、わずかですが1—2の間に、元のURLでのアクセスが Not Found になってしまうタイムラグを作ってしまうことになります。
ウェブサイトに求められる要件によりますが、上記のような強引な移行を避けたいならば、次の方法でスムーズな更新が可能です。
Redirectionとduplicate-postを使ってのドラフト版作成と正規URLでの新ページ公開
手順
- 公開中の固定ページ(古いページ)のURLとスラッグを仮に下記とした場合に…
[正規URL]https://firstaudience.com/popular-page/
- 新ページのドラフト版(A)を、新規固定ページで作成し、仕上げる。
https://firstaudience.com/draught/
- 完成したドラフト版の複製(A’)を生成し(duplicate-postプラグイン等を活用)仮の一時的URLで公開する。
[一時的URL]https://firstaudience.com/temporary-page/
- Redirection プラグインで新規ルールを設定する。
[正規URL]へのアクセスを[一時的URL]へリダイレクト。https://firstaudience.com/popular-page/
へのアクセスをhttps://firstaudience.com/temporary-page/
へリダイレクト
その際、HTTPステータスコードは 307または302(一時的なリダイレクト/一時的な移転)とする。
この時点で新しい内容が公開される。 - 古いページのスラッグを、使わないものに変更して保存する。
https://firstaudience.com/popular-page-end-yyyymmdd/
- 古いページを非公開にする。
- (A)に正式なスラッグを設定する。
https://firstaudience.com/draught/
をhttps://firstaudience.com/popular-page/
[正規URL]に - 4項で設定した Redirection のルールを削除する。
- 正規のアドレスにアクセスして(A)が表示されるようになっているのを確認する。
- (A’)を削除して完了。
更に万全を期すならば (A’)へのアクセスを[正規URL]へリダイレクトする設定をしておく。https://firstaudience.com/temporary-page/
へのアクセスをhttps://firstaudience.com/popular-page/
[正規URL]にリダイレクト
その際、HTTPステータスコードは 301(恒久的な移転)とする。
ご参考になりましたら幸いです。
さてここまで書いてなんですが、
cronによる予約更新が動作している環境では、Advanced Schedule Posts というプラグインを使うと、スラッグのスワップのようなことを自動でやってくれるようです。私はまだ試せていませんが、わかりやすく紹介されている記事をみつけましたので、リンク致します。
http://bashalog.c-brains.jp/18/08/02-172800.php
コメントを残す