WordPress のドメイン変更後にリンク切れになった画像のURL修復

DBをバックアップ

DB内の文字列置換を行う前に、念のためバックアップを取っておきます。
MySQLのバックアップを取れば十分だと思いますが、今回はAmazon Lightsailのスナップショット機能でサーバをまるごとバックアップします。

DB情報を確認

Search Replace DB を実行する際には、DBにおけるWordPress関連のユーザ名とデータベース名が必要になるため、それを確認しておきます。

  • ユーザ名: bn_wordpress
  • DB名: bitnami_wordpress
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5221
Server version: 8.0.18 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select User, Host from mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| bn_wordpress     | 127.0.0.1 |
| root             | 127.0.0.1 |
| bn_wordpress     | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
7 rows in set (0.02 sec)

mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| bitnami_wordpress  |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> show tables from bitnami_wordpress;
+-----------------------------+
| Tables_in_bitnami_wordpress |
+-----------------------------+
| wp_commentmeta              |
| wp_comments                 |
| wp_links                    |
| wp_options                  |
| wp_postmeta                 |
| wp_posts                    |
| wp_term_relationships       |
| wp_term_taxonomy            |
| wp_termmeta                 |
| wp_terms                    |
| wp_usermeta                 |
| wp_users                    |
+-----------------------------+
12 rows in set (0.01 sec)

mysql> quit
Bye

Search Replace DB を使ってDB内の文字列を置換

Search Replace DB をダウンロード

interconnect/it – Database Search and Replace Script in PHP
ダウンロードの際、氏名とメールアドレスを入力する必要があります。
「Search-Replace-DB-4.1.0.zip」のようなzipファイルが得られます。

Search Replace DB をサーバへアップロード

  1. 自分のWordPressサーバにzipファイルをアップロード。
    例)WinSCPを利用する。AWSの管理画面からダウンロードしておいたSSH秘密鍵とパスフレーズでサーバへログインしアップロード。
    • アップロード先ディレクトリ: wp-config.php と同じディレクトリ
      例)/home/bitnami/apps/wordpress/htdocs
  2. zipを解凍。
$ pwd
/home/bitnami/apps/wordpress/htdocs
$ ls -ltr
total 332
-rw-r-----  1 bitnami daemon    4253 Apr 17 02:50 wp-config.php
-rw-rw-r--  1 bitnami daemon    3300 Apr 17 04:53 wp-load.php
-rw-rw-r--  1 bitnami daemon     405 Apr 17 04:53 index.php
drwxrwxr-x  9 bitnami daemon    4096 Apr 17 04:53 wp-admin
-rw-rw-r--  1 bitnami daemon    3133 Apr 17 04:53 xmlrpc.php
-rw-rw-r--  1 bitnami daemon   31111 Apr 17 04:53 wp-signup.php
-rw-rw-r--  1 bitnami daemon    8501 Apr 17 04:53 wp-mail.php
-rw-rw-r--  1 bitnami daemon    2496 Apr 17 04:53 wp-links-opml.php
-rw-rw-r--  1 bitnami daemon    3940 Apr 17 04:53 wp-cron.php
-rw-rw-r--  1 daemon  daemon    3931 Apr 17 04:53 wp-config-sample.php
-rw-rw-r--  1 bitnami daemon    2275 Apr 17 04:53 wp-comments-post.php
-rw-rw-r--  1 bitnami daemon     351 Apr 17 04:53 wp-blog-header.php
-rw-rw-r--  1 bitnami daemon    6912 Apr 17 04:53 wp-activate.php
-rw-rw-r--  1 bitnami daemon   10089 Apr 17 04:53 readme.html
-rw-rw-r--  1 bitnami daemon   19915 Apr 17 04:53 license.txt
-rw-rw-r--  1 bitnami daemon    4755 Apr 17 04:53 wp-trackback.php
-rw-rw-r--  1 bitnami daemon   19396 Apr 17 04:53 wp-settings.php
-rw-rw-r--  1 bitnami daemon   47874 Apr 17 04:53 wp-login.php
drwxrwxr-x 21 bitnami daemon   12288 Apr 17 04:53 wp-includes
drwxrwxr-x  8 bitnami daemon    4096 Apr 17 05:20 wp-content
-rw-rw-r--  1 bitnami bitnami 110775 Apr 18 11:53 Search-Replace-DB-4.1.0.zip
$ unzip Search-Replace-DB-4.1.0.zip
Archive:  Search-Replace-DB-4.1.0.zip
f923b32c2b7d41b9b9f0be78d0ccaaf4524e96fa
   creating: Search-Replace-DB-4.1.0/
  inflating: Search-Replace-DB-4.1.0/.editorconfig
 extracting: Search-Replace-DB-4.1.0/.gitignore
 extracting: Search-Replace-DB-4.1.0/.htaccess
  inflating: Search-Replace-DB-4.1.0/.travis.yml
  inflating: Search-Replace-DB-4.1.0/CHANGELOG.md
  inflating: Search-Replace-DB-4.1.0/LICENSE.txt
  inflating: Search-Replace-DB-4.1.0/README.md
  inflating: Search-Replace-DB-4.1.0/composer.json
  inflating: Search-Replace-DB-4.1.0/composer.lock
  inflating: Search-Replace-DB-4.1.0/index.php
  inflating: Search-Replace-DB-4.1.0/package.json
  inflating: Search-Replace-DB-4.1.0/phpunit.xml
  inflating: Search-Replace-DB-4.1.0/srdb.class.php
  inflating: Search-Replace-DB-4.1.0/srdb.cli.php
   creating: Search-Replace-DB-4.1.0/tests/
  inflating: Search-Replace-DB-4.1.0/tests/DataSet.xml
  inflating: Search-Replace-DB-4.1.0/tests/DataSetGenerator.php
  inflating: Search-Replace-DB-4.1.0/tests/SrdbTest.php

Search Replace DB を実行

ブラウザから Search Replace DB の実行ページを開きます。URLは「http://xxx/Search-Replace-DB-4.1.0/」のようになります。

置換したい文字列とその他情報を入力し、まずは「Do a safe test run」を実行します。まだ実際には置換は行われません。以下のように実行結果が表示されます。場合によっては置換できないデータがありエラーが表示されることもあります。
内容を了解したら、「Search and Replace」で実際に置換を行います。

最後に「delete me」ボタンあるいはサーバ上でコマンドラインから本ツールを削除します。

参考

タグ:

コメントを残す