WordPress Related Postsの関連記事タイトルをBetter Search Replaceを使って更新する方法
目次
WordPressサイトのSSL化に伴う内部リンクの一括置換にも便利なプラグイン
WordPress Related Postsの関連記事タイトルはリンク先記事のタイトル変更に連動しない
WordPressを導入したサイトを管理していて、関連記事を表示するプラグイン「WordPress Related Posts」をインストールして使用していたのだが、「リンク先の関連記事のタイトルを変更すると、リンク元のテキストが変更後のタイトルに更新されず、関連記事選択画面(WP Related Postsプラグインではリンクを自動で表示する他、任意で関連付けたい記事を選択できる)の検索結果にも変更が反映されない」という問題があった。
WordPress.org:WordPress Related Posts
不動産業界を例にすると、マンションやアパートの物件名は、物件の所有者や管理会社が変わると、変更されることがある。不動産検索サイトをWordPressで作っていて、記事タイトルに物件名(通販サイトの場合は記事タイトル=商品名)を記述する場合、物件名が変わった際は記事のタイトルを書き換えれば新しい物件名にできるのだが、WordPress Related Postsプラグインの機能で別の物件ページ(その物件の近所にある物件、同じ沿線にある物件のページ)に表示済みのリンクのタイトルは変更前の物件名のまま。タイトルを手動で書き換える機能はなく、すっきりしない状態になってしまう。
どうしたものかと困っていたのだが、データベースを編集するプラグインを使うことで修正できることがわかった。同じ現象で困っている人がいるかもしれないのでメモ。
※「WordPress Related Posts」プラグインに関してはリリースされてから時間が経っているためここでは使い方に関しては説明を省きます。
また、今回の関連記事タイトルの修正作業は「WordPress 4.9.10」で行っています。WordPress Related PostsのWordPress 5環境での動作は未確認です。
当記事作成時ではWordPress Related Postsプラグインは公式にはWP 5環境でテストされておらず、今後の正式対応予定があるのかはわかりません。これから関連記事表示機能のプラグインを導入される際は、WordPressのプラグイン新規追加画面で「similar」「related」といったワードの検索結果から最終更新日が近いプラグインを検討された方がいいかもしれません。
当記事で紹介する「Better Search Replace」は「DRY RUN」機能で操作ミスを防ぐことができますが、データベースを編集します。念のため、必要に応じてデータベースのバックアップをとっておいてください。
WordPressの管理画面からデータベースを一括置換できるプラグイン Better Search Replace
WordPressプラグインの「Better Search Replace」はWordPressの管理画面からデータベース上のテキストの検索、一括置換を実行できる。検索/置換を実行するテーブルを任意で選択できる他、チェックを入れておけば操作を誤っても置換を実行しない安心機能があるのが便利。WordPress 5.1以上に対応しているので、これからも長く使えそうだ。
WordPress.org:Better Search Replace
操作画面は英語だが、今回の件に関してのみ言えば、画面上で触る箇所は4箇所程度なので難しくはない。
WordPressのプラグイン新規追加画面で「Better Search Replace」と入力し、インストール、有効後、管理画面のサイドバーの「ツール」から「Better Search Replace」を選択すると操作画面が表示される。
Better Search Replaceの基本的な使い方
置換対象となる語句があるテーブルを確認する
まず、置換対象となる語句がどのテーブルにあるか検索して確認する。操作画面上部にある「Search/Replace」タブの、「Search for」テキストフィールドに検索したい語句を入力、「Select tables」のリストの中から、検索対象とするテーブルを選択、「Run as dry run?」にチェックをした状態で「Run Search/Replace」ボタンをクリックする。このとき注意しておきたいのが、「Run as dry run?」にチェックをしておくこと。チェックをしておくことで実行されるのは検索のみとなるため、操作ミスを防ぐことができる。
WordPress Related Postsのデータは「wp_postmeta」にあるのでここではそのテーブルを選択して検索を実行する。
置換したい語句が選択したテーブル上にある場合、
「DRY RUN:1 tables were searched, 14 cells were found that need to be updated, and 0 changes were made.(1つのテーブルで検索し、14のセルでヒット、置き換えなし)」といった表示がされる。
置き換えたい語句を入力し、置換を実行する
置換したい語句があるテーブルが確認できたら、次に「Replace with」テキストフィールドに置き換える語句を入力し、「Run as dry run?」のチェックを外して「Run Search/Replace」ボタンをクリックすると、置換される。
置換実行後、古いタイトルで関連記事のリンクが表示されているページをリロードすると、タイトルが置換されているのが確認できる。
今回の場合、一つ注意しておきたいのが、wp_postmetaにはカスタムフィールドの値なども入っているため、置換を実行すると、WordPress Related Posts以外の場所の語句も置換されるということ。投稿画面でカスタムフィールドに変更前の記事タイトルと同じ語句を入力していると、それらも書き換わってしまう(例えば、カスタムフィールドに「物件名:マンションA / 旧物件名:アパートメントA」と入力してある状態で「アパートメントA」を「マンションA」に置換すると、「物件名:マンションA / 旧物件名:マンションA」となってしまう)ので、そこは手動で投稿画面から修正する必要がある。
Better Search Replaceは以前にもサイトをhttpからhttpsにした際に、投稿記事中に記載してある内部リンクの置換にも使用して便利だった。同様の機能を提供するプラグインに「Search Regex」があるが、最終更新から数年が経過している。Search Regexから移行するのにピッタリのプラグインだろう。