[Server & Network General] 新生さくらのレンタルサーバへ WordPress を引っ越すための手順 (2)

つづき。

## WP-CLI をインストールする

### シェルを zsh に変更

WordPress の移行には直接関係ないが、さくらのサーバのシェルを zsh に変更する。
以降、zsh 前提で記述する。

> * [[Server & Network] シェルを csh から zsh へ変更する | deadwood](https://www.d-wood.com/blog/2016/05/30_8087.html)

### パスを追加する

`~/.zshrc` にパスの設定を追加する。

“`prettyprinted:~/.zshrc
# ~/local path を追加
export TMPDIR=$HOME/local/tmp
export PATH=$HOME/local/bin:$PATH
“`

ディレクトリを作成する。

“`prettyprinted
$ mkdir local/bin local/tmp
“`

### インストールと設置

wp-cli をダウンロード、設置する。

> * [Installing – WP-CLI — WordPress](https://make.wordpress.org/cli/handbook/installing/#recommended-installation)

“`prettyprinted
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ mv wp-cli.phar ~/local/bin/wp
“`

composer をダウンロード、設置する(WordPress 移行に必須ではない)。

> * [Introduction – Composer](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx)

“`prettyprinted
$ php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
$ php -r “if (hash_file(‘SHA384’, ‘composer-setup.php’) === ‘544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
$ php composer-setup.php
$ php -r “unlink(‘composer-setup.php’);”
$ mv composer.phar ~/local/bin/composer
“`

参考までにシェルスクリプトにしておく。

## WordPress の設定

ユーザーは、インストール時に既存サイトと同じアカウントを作成しておく。

– user

以下、[WP-CLI](https://developer.wordpress.org/cli/commands/) を利用していく。
`wp` コマンドは `wp-config.php` のあるディレクトリで実行する。

“`prettyprinted
$ cd ~/www/com.example.www/wordpress
“`

### 初期化

インストール時に投稿されている不要なポストやページなどを削除する。

– category
– tag
– post
– page
– comment

> * [wp term | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/term/)
> * [wp post | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/post/)
> * [wp comment | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/comment/)

“`prettyprinted
# Delete all categories.
$ wp term list category –field=term_id | xargs wp term delete category

# Delete all post tags.
$ wp term list post_tag –field=term_id | xargs wp term delete post_tag

# Delete all posts.
$ wp post delete –force $(wp post list –format=ids)

# Delete all pages.
$ wp post delete –force $(wp post list –post_type=’page’ –format=ids)

# Delete all comments.
$ wp comment delete –force $(wp comment list –format=ids)
“`

参考までにシェルスクリプトにしておく。

カテゴリーは必ず1つ必要なようで「未分類」は消せない。

“`prettyprinted
$ wp term list category –field=term_id
1
$ wp term delete category 1
Warning: category 1 doesn’t exist.
Success: Term already deleted.
“`

### オプション設定

`wp option list` で必要なオプションを確認する。

– option (dashbord)

> * [wp option | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/option/)

“`prettyprinted
$ wp option list
+———————————+————————————————————————————————-+
| option_name | option_value |
+———————————+————————————————————————————————-+
| siteurl | https://stg.example.com/wordpress |
| home | https://stg.example.com/wordpress |
| blogname | New |
| blogdescription | Just another WordPress site |
:
| date_format | Y年n月j日 |
| time_format | g:i A |
:
| permalink_structure | /%year%/%monthnum%/%day%/%postname%/ |
:
“`

サイトに応じて必要なものを設定する。
`wp option update` で実行する。

“`prettyprinted
wp option update siteurl ‘https://stg.example.com/wordpress’
wp option update home ‘https://stg.example.com/wordpress’
wp option update blogname ‘foo’
wp option update blogdescription ”
wp option update timezone_string ‘Asia/Tokyo’
wp option update date_format ‘Y/m/d’
wp option update time_format ‘H:i’
wp option update permalink_structure ‘/blog/%year%/%monthnum%/%day%_%post_id%.html’
“`

参考までにシェルスクリプトにしておく。

## 記事データと画像の移行

以下の点から、XML ファイルのエクスポート・インポートでデータ移行を行う事とする。

– DB Version, Engine が変わる
– MySQL innodb の key prefix length の制限。

### XML ファイルのエクスポート

現行の WordPress から WXR をエクスポートする。

– 「ツール > エクスポート > すべてのコンテンツ」から XML ファイルをエクスポートする。

### XML ファイルのインポート

– 「ツール > インポート > WordPress」から書き換えた XML ファイルをインポートする。
– 「添付ファイルをダウンロードしてインポートする」を選択し、しばし待つ。

もしインポートするファイルのサイズが WordPress Dashbord に表示されている最大サイズより大きい場合は、さくらのレンタルサーバの「コントロールパネル > PHP設定の編集」でサイズを変更する。

“`php:php.ini
post_max_size = 20M
upload_max_filesize = 20M
“`

「メディア のインポートに失敗しました」と表示されるが無視する。
(前段のアップロード可能最大サイズを画像込みのサイズにすれば、失敗しないものと推測される。)

### メディアファイルのインポート

元サイトからメディアファイル(画像)を SFTP 等でインポートする。
ディフォルト設定であれば、下記パスの「年/月」フォルダが対象。

– 元サイトの /wordpress/wp-content/uploads/年/月

前段の「メディアのインポート」に成功していれば必要ない。

## プラグインとテーマ

– plugin
– theme

### プラグインとテーマの同期

プラグインとテーマファイルを同期させておく。
「さくらのレンタルサーバ かんたんインストール」でディフォルトインストールされるプラグインと必要なプラグインを同期させる。

– /wp-content/plugins/

同じく必要なテーマを同期させる。

– /wp-content/themes/

### プラグインの有効化と設定

各プラグインの有効化と設定を GUI で行う。面倒くさい
プラグインによっては、設定のエクスポートとインポートができるものもある。

### テーマのカスタマイズ設定

表示に必要な設定を行う。
操作は Dashbord からが進めやすい。

– メニューを設定
– サイドバーを設定
– ウィジェットを設定

> * [wp menu | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/menu/)
> * [wp sidebar | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/sidebar/)
> * [wp widget | WordPress Developer Resources](https://developer.wordpress.org/cli/commands/widget/)

## 動作確認

ページが意図したとおりに表示されるか確認する。

– WXR のインポート で改行が詰められてしまうので markdown が壊れた。
– カテゴリの親子関係が壊れた(ex. WordPress > WordPress の親と子がマージされ子がなくなった)。

後で直す。

### サイトルートに表示する設定

必要に応じて、サブディレクトリに設置した WordPress をサイトのルートに表示するよう変更する。

> * [[WordPress] サイトルートに表示する | deadwood](https://www.d-wood.com/blog/2012/08/24_2423.html)

– 現状、下書きのプレビューが 404 となる。

## ToDo

ここまでの積み残しは以下の通り。

– 「ドメイン/SSL設定」の本番環境への切り替え。
– 「Webアプリケーションファイアウォール」の設定を保留。
– 「バックアップ & ステージング」の設定を保留。

確認

– WXR のインポート で改行が詰められてしまうので markdown が壊れた。
– カテゴリの親子関係が壊れた(ex. WordPress > WordPress の親と子がマージされ子がなくなった)。
– 現状、下書きのプレビューが 404 となる。

つづく。