お使いの WordPress の環境がわかりませんが、プラグインを使わずにと言うことなので、
WP-CLI の「search-replace」コマンドは、どうでしょうか?
wp search-replace 'old.example.com' 'new.example.jp' --skip-columns=guid --dry-run
--dry-run を指定して実行している間は、各テーブルで何件見つかったかを表示するだけで、データベースは変更されないので、一度試してみると良いと思います。(変更するときは、コマンドの最後の--dry-run
を外す)
インストール直後の WordPress の場合、こんな感じです。
$ wp search-replace 'old.example.com' 'new.example.jp' --skip-columns=guid --dry-run
+------------------+-----------------------+--------------+------+
| Table | Column | Replacements | Type |
+------------------+-----------------------+--------------+------+
| wp_commentmeta | meta_key | 0 | SQL |
| wp_commentmeta | meta_value | 0 | SQL |
| wp_comments | comment_author | 0 | SQL |
| wp_comments | comment_author_email | 0 | SQL |
| wp_comments | comment_author_url | 0 | SQL |
| wp_comments | comment_author_IP | 0 | SQL |
| wp_comments | comment_content | 0 | SQL |
| wp_links | link_notes | 0 | SQL |
| wp_links | link_rss | 0 | SQL |
| wp_options | option_name | 0 | SQL |
| wp_options | option_value | 2 | PHP |
| wp_options | autoload | 0 | SQL |
| wp_postmeta | meta_key | 0 | SQL |
| wp_postmeta | meta_value | 0 | SQL |
| wp_posts | post_content | 2 | SQL |
| wp_posts | post_title | 0 | SQL |
| wp_posts | post_excerpt | 0 | SQL |
| wp_posts | post_status | 0 | SQL |
| wp_posts | comment_status | 0 | SQL |
| wp_posts | ping_status | 0 | SQL |
| wp_posts | post_password | 0 | SQL |
| wp_posts | post_name | 0 | SQL |
| wp_posts | to_ping | 0 | SQL |
| wp_posts | pinged | 0 | SQL |
| wp_posts | post_content_filtered | 0 | SQL |
| wp_posts | post_type | 0 | SQL |
| wp_posts | post_mime_type | 0 | SQL |
| wp_term_taxonomy | taxonomy | 0 | SQL |
| wp_term_taxonomy | description | 0 | SQL |
| wp_termmeta | meta_key | 0 | SQL |
| wp_termmeta | meta_value | 0 | SQL |
| wp_terms | name | 0 | SQL |
| wp_terms | slug | 0 | SQL |
| wp_usermeta | meta_key | 0 | SQL |
| wp_usermeta | meta_value | 0 | PHP |
| wp_users | user_login | 0 | SQL |
| wp_users | user_nicename | 0 | SQL |
| wp_users | user_email | 0 | SQL |
| wp_users | user_url | 0 | SQL |
| wp_users | user_activation_key | 0 | SQL |
| wp_users | display_name | 0 | SQL |
+------------------+-----------------------+--------------+------+
Success: 4 replacements to be made.
なお、独自のデータベースを作成するプラグインやテーマを使っている場合は、独自に作成したデータベースは、デフォルトでは置換されません。
状況に合わせて、--all-tables-with-prefix
や --all-tables
を指定することで置換されます。
これもダメで、他の方法だと 「Search Replace DB」や「wp search-replace」がやっている内容を一つずつ人手で処理することになると思います。
- phpMySQLAdmin 等のツールで、一つずつ置換/編集する。
- mysqldump コマンドでダンプしたファイルをテキストエディタで、一つずつ置換。
- mysql コマンドラインからSQLで、一つずつ置換。
等の方法で、できなくはありませんが、PHPのシリアライズ問題やGUID 問題があるので一括での置換は難しいと思います。
GUID については、サイト URL の変更#GUID についての重要事項 - WordPress Codex 日本語版 を読んで、問題や影響を理解した上で実行してください。