「この機能はもう使っていないので、消しておいてください」。作業としては小さく見えるのに、公開中のサイトで一番事故が起きやすいのがこの種の依頼です。表示を消しただけで裏側が動き続けていたり、逆に消しすぎて別の画面が崩れたり、半年後に「あの頃のデータを見たい」と言われて青くなったりします。使わなくなった機能を畳むときは、止める・隠す・消すを別の作業として順番に進めると、途中でいつでも引き返せます。実際に口コミ機能の廃止と予約ボタンの停止を担当したときに何が漏れたのかも含めて書きます。
止める、隠す、消す。この3つは別物です
同じ「やめる」でも、中身はまったく違います。
止めるのは、機能そのものは残したまま動作だけを停止させることです。投稿の受付を閉じる、ボタンを押せなくする、フォームの送信先だけ切る。設定やコードは残っているので、フラグひとつで元に戻せます。
隠すのは、表示から外すことです。メニューから項目を消す、ウィジェットを外す、固定ページを非公開にする、CSSで見えなくする。ここで注意が要るのは、隠したつもりでも裏側は生きている場合があることです。CSSで非表示にしただけの機能は、URLを直接入力すれば到達できますし、フォームがあれば送信も通ります。ページを非公開にしたのに検索結果には残っている、というのもこの段階でよく起きます。
消すのは、コード・プラグイン・データを削除することです。ここまで来ると戻せません。戻すにはバックアップからの復元になります。
依頼の言葉は「消してください」でも、実際に求められているのが「もう表示したくない」なのか「二度と使えない状態にしたい」なのかで、やることが変わります。ここを確認せずに着手するのが最初のつまずきです。
3段階を並べると、何が違うか
| 止める | 隠す | 消す | |
|---|---|---|---|
| やること | 受付や動作を停止する | 表示・導線から外す | コード・データ・プラグインを削除 |
| 元に戻す手間 | 設定の切り替えのみ | 数分から数十分 | バックアップからの復元 |
| 裏側の動作 | 止まる | 残ることがある | 止まる |
| URL直打ち | 到達できても操作は通らない | 到達できる場合がある | 404または301 |
| データ | 残る | 残る | 消える(残骸が残ることも) |
| 向いている場面 | 一時停止、季節的な休止 | 方針が固まりきっていない | 廃止が確定し、データも不要 |
口コミ機能を廃止したとき、1箇所では終わらなかった
修理店の情報を店舗ごとに掲載しているポータルサイトで、一般の利用者が書き込む口コミを廃止したいという依頼を受けました。独自テーマで作られた、店舗ページと記事ページの2系統を持つサイトです。
着手前に洗い出したところ、対象は3系統ありました。ひとつは口コミの件数表示、ひとつは投稿フォーム、そしてもうひとつが会員登録の導線です。この3つが、店舗ページ・投稿ページ・サイドバーのそれぞれのテンプレートに散っていました。
件数の表示は、テーマ独自の関数でラップされていました。get_comment_only_number() のような専用関数を通していたため、関数名でテーマ全体をgrepすると呼び出し箇所を一度に列挙できます。標準の comments_number() だけを探していたら取りこぼしていました。引き継いだサイトで機能を畳むときは、まず「その機能が何という名前で呼ばれているか」を特定するのが早道です。制作元が分からないサイトを触る場合の全体の進め方は、制作会社と連絡が取れないWordPressを引き継ぐときのチェックリストにまとめています。
見落としがちなのが3つめの会員登録です。口コミの投稿フォームだけ消して、ログインフォームと無料登録のボタンを残すと、「登録したのに書き込む場所がない」という状態のサイトができあがります。機能を廃止するときは、その機能に向かう導線もセットで畳む必要があります。
そして、この案件では漏れが出ました。PC表示で全ページを確認して納品したのですが、スマートフォン表示のメニューに質問掲示板が残っていたのです。翌日に指摘を受けています。口コミと質問掲示板は別のプラグインで動く別機能でしたが、依頼主の意図としては「一般の利用者が書き込む場所を閉じたい」であり、本来は着手前に対象へ含めるか確認すべきものでした。この手の依頼では、PCとスマートフォンの両方で全ページを見ることを手順に組み込んでいます。
もうひとつ、機能を消すと必ずレイアウトに穴が空きます。メニュー項目が1つ減って間延びする、隣の枠との間が不自然に空く。非表示にしただけで納品せず、空いた分の詰め直しまでやって初めて完了です。
予約ボタンを一時停止したときに引っかかったこと
同じサイト群で、「WEB予約はコチラ」というバナーを押せない状態にしてほしい、という依頼もありました。事情があって予約受付を一時的に止めるためのものです。
この依頼で厄介だったのは、同じボタンがテンプレート内に最低5箇所、重複して実装されていた点です。店舗ページの中心となるテンプレート1ファイルの中に4箇所、ブログ側のサイドバーに1箇所。しかもクラス名に webs-reserve / mobile-reserve / web_reserve / web-reserve という表記ゆれがあり、CSSセレクタでまとめて指定しようとすると必ず漏れます。結局、クラス名ではなく「WEB予約」という表示文言でgrepするのが最も確実でした。長年にわたって継ぎ足されたテーマでは、これは珍しいことではありません。似た経緯のサイトについては親テーマを直接編集したサイトを引き継いだ話と、その後の選択でも触れています。
見た目をグレーにするだけでは不十分でした。リンクが生きていればクリックで遷移してしまうため、pointer-events: none を当てるか href を外すところまでやり、実際に押して遷移しないことを確認しています。再開の予定があったので、削除ではなく条件分岐で切り替えられる形にしました。
この作業で最も危ないのは技術ではなく、対象範囲の確認漏れです。特定の店舗だけなのか、掲載している全店舗なのか。一時的なのか恒久的なのか。予約の導線を止めることは売上に直結するので、全店舗に適用してしまえば重大な事故になります。作業を始める前に、対象と期間を文字で残しておいてください。
消す前に回収するものを決める
削除に進む前に、後から必要になるものを引き上げます。投稿やコメントのデータ、独自テーブルの中身、アップロードされたファイル、その機能宛に届いていたメールの控え。特に、問い合わせフォームや会員機能を消す場合、過去の受信内容はサイト側に残っていないこともあるので、どこに保管されているかを先に確認します。
本文中に埋め込まれたリンクも回収対象です。廃止したページへのリンクが記事のあちこちに残っていると、リンク切れが延々と残ります。1本ずつ手で直すより、データベース側で wp_posts.post_content を対象に一括置換したほうが早く、取りこぼしもありません。WP-CLIの wp search-replace か、それに類するツールで済みます。実行前のバックアップは必須です。
そして、消したページのURLは外部から参照され続けます。他サイトからのリンク、印刷物、ブックマーク。単に404にするか、近い内容のページへ301で転送するかを決めておきます。長期間止めるだけの予定なら、リンクを残したままにせず要素ごと非表示にするか、検索エンジンに辿らせない指定を入れておくほうが後始末が楽です。
順番として、こう進めます
まず止める。動作を停止させて、問い合わせが増えないか、他の画面が壊れていないかを1〜2週間見ます。次に隠す。導線から外し、非公開にして、レイアウトの穴を埋めます。ここまでは全部戻せます。そのうえで、1〜2か月ほど誰も困らなかったことを確認してから、コードとデータを消します。
急いでいるように見えて、この順番のほうが結局は早く終わります。いきなり削除して、後から「あの機能はまだ使っていた」と分かったときの復旧のほうが、はるかに時間を食うからです。保守契約の中でどこまでを継続的に見てもらうかについては、保守契約でどこまで頼めるのか、範囲の線引きをどう決めるかも参考になります。過去の対応の傾向は対応実績のページにも載せています。
よくある質問
使っていないプラグインは、無効化と削除のどちらがいいですか
使う予定がないなら削除です。無効化しただけのプラグインもファイルはサーバー上に残るため、脆弱性が見つかったときの対象になります。ただし削除の前に、そのプラグインが作ったデータベーステーブルや設定値がどうなるかを確認してください。削除時に自分の痕跡を消すものと、テーブルをそのまま残すものがあります。残った場合、後から手で消さないとデータベースが太っていきます。判断がつかないときは、無効化した状態で数週間置いてから削除すると安全です。
固定ページを非公開にすると、検索結果からも消えますか
すぐには消えません。非公開にすればアクセスした人には見えなくなりますが、検索エンジンのインデックスから外れるまでには時間がかかります。急いで消したい場合は、Search Consoleの削除ツールで一時的に非表示にしたうえで、恒久的には404か301の状態を維持します。逆に、URLごと消してしまうと外部リンクが全部切れるので、内容の近いページがあるなら301で転送するほうが無難です。
止めた機能を、後で戻せるようにしておく方法は
削除ではなく条件分岐にしておくことです。テーマファイルからブロックごと消すのではなく、表示を制御する変数や設定値で切り替えられる形にしておけば、再開のときは値を変えるだけで済みます。あわせて、何を止めたのか、対象はどこか、いつ止めたのかを1行で記録しておいてください。数か月後に「なぜこれは表示されないのか」を調べ直す時間が、まるごと不要になります。
