wordpress icon

WordPress 投稿を移行

Wordpressの新しいサイトに元の投稿だけを移行することで、リニューアルしながら過去の投稿も見れるようにしたい。

投稿の移行先

WordPress の移行先は、Wordpressのインストールが済んで全ての設定が終了している状態、ブラウザからWEB画面の表示ができていること。
あと、ドラブル回避のため、投稿等は何も入っていないのが条件だ。

投稿の移行をするための情報

投稿を移行するには、画像とデータベースの一部を移行すれば良い。

画像のディレクトリは、

debian

シングルサイト

/var/www/wordpress/wp-content/uploads/

マルチサイトでは、少しディレクトリが異なるので次の投稿で記すことにする。

データベース内の投稿のテーブル

prefix が wp_  でシングルサイトならば、

wp_posts
wp_postsmeta

この2つのテーブルを新しいデータベースに移行すれば良い。

phpMyAdmin

テーブル内の変更が必要なので、

phpmyadmin

を使えるようにしておこう。
インストール方法は、

				
					apt install phpmyadmin

ln -s /usr/share/phpmyadmin /var/www/wordpress/    <--  ドメインルートを指定
				
			

移行元と移行先のサーバーの両方ともphpMyAdminをインストールする。

ファイルの移行

画像の移行をする。

debian のディレクトリだが、

/var/www/[wordpressのディレクトリ]/wp-content/uploads/

以下のファイル

				
					ls -al /var/www/wordpress/wp-content/uploads

drwxr-xr-x 4 www-data www-data 4096 Apr  2 17:02 2025
				
			

年ごとに月ごとにディレクトリで分類される。

これらの画像ファイルを移行先の同じディレクトリにコピーする。

移行先のサーバーのアドレスを 192.168.10.50 とする、また、ユーザーが root でsshでログインできる設定とする。

※ root の権限がない場合は、一旦、ユーザーのhome ディレクトリにファイルを転送してから、サーバー内でコピーする方法もある。

移行元と移行先のディレクトリが同じとする、2000年以降のファイルとすると、ワイルドカードを使って、[ 2* ]とフォルダー指定して

scp コマンドを使って、

				
					# scp -rC /var/www/wordpress/wp-content/uploads/2* root@192.168.10.50: /var/www/wordpress/wp-content/uploads/
				
			

※ 移行先に同じ名前のファイルがある場合は上書きされるので注意したい。

データベースの移行

移行元で

mysqldump でも不可能ではないが、mysqladminを使うことにしたい。

phpmyadmin

この場合、データベース名「 krm 」のテーブル 「 kr_ 」を移行します。

投稿を移行するので、

postmeta , posts

なので、ここでは、

kr_postmeta , kr_posts

にチェックを入れて

チェックしたものを: (今回は2つのテーブルだけ)

「エクスポート」を選んで、エクスポートボタンをクリックすると、ローカルPC内にダウンロードされる。

krm.sql.zip

というファイルである。(phpMyAdminは、zipで圧縮されている状態でないとインポートできないので注意)

※ Macは、デフォルトで自動解凍されるので、再圧縮するか、圧縮されない設定をする。Safariの使用だと、設定 -> 一般 -> ☑️ダウンロード後、”安全な”ファイルを開く のチェックを外して、Safari を終了して起動しよう。

移行先で

移行元と同様に、phpmyadmin を使う。

目的のデータベースをクリック①して、インポートボタン②から、ローカルPCのファイルを指定して目的のデータベースにテーブルをインポートする。

この場合は、テーブル

kr_postmeta
kr_posts

が、データベース wpdb にインポート③された。

テーブルの内容を修正

サーバーのURLの変更があった場合は、修正が必要になる。

※ http://example.com -> https://example.jp のような変更

テーブルを選択してインライン編集する

この場合のテーブル名を

kr_postmeta
kr_posts

とすると、

				
					UPDATE kr_posts
SET post_content = REPLACE(
  post_content,
  'http://example.com/',
  'https://example.jp/'
);
				
			
guid は変更しなくても良いらしいが、変更する場合は
				
					UPDATE kr_posts
SET guid = REPLACE(
  guid,
  'http://example.com/',
  'https://example.jp/'
);
				
			

テーブルを挿入

移動元のテーブルを移動先のテーブルに挿入する

注意)同一のテーブルが存在する場合の処理をスキップする設定したが、トラブルの可能性はある。

移動先のテーブル名を

wp_postmeta
wp_posts

とすると、

				
					INSERT IGNORE INTO wp_posts
SELECT * FROM kr_posts;

INSERT IGNORE INTO wp_postmeta
SELECT * FROM kr_postmeta;
				
			

移動元のテーブルを移動先のテーブルに挿入されているはずです。

移行に使った元のテーブルは残っているが、うまく動作したら消去しても良い。

DROP TABLE 

を使う

Related Posts

wordpress icon

WP-CLI インストール

WP-CLI は WordPress を管理するためのコマンドラインインターフェースで、プラグインのアップデートなどの実行ができる。