大量のメディアを WXR でインポートする場合は Web の管理画面より WP-CLI を使ったほうが確実です(タイムアウトがほぼ発生しないので)。そこで、久しぶりにエックスサーバーで WP-CLI を使おうとしたら以下のようなエラーが。
$ wp --path=/home/username/example.com/public_html/wpdir/ import test.xml --authors=skip --skip=0 PHP Parse error: syntax error, unexpected '?', expecting '&' or variable (T_VARIABLE) in /home/username/example.com/public_html/wp-includes/compat-utf8.php on line 47 $
PHP のバージョンが古いから?っぽい。 PHP 8.3 を指定して /usr/bin/wp を実行しても Warning が表示されるので、いっそのこと最新の WP-CLI を自分のホームディレクトリ以下に取得して使用することに。
$ mkdir ~/bin $ cd ~/bin $ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar $ chmod +x wp-cli.phar $ php8.3 ~/bin/wp-cli.phar --version WP-CLI 2.12.0 $ ~/bin/wp-cli.phar --info (表示略)
Warninng も表示されなくなったのであらためて以下のように実行したらまたエラー。WordPress Importer をアクティベートしろとのこと。
$ php8.3 ~/bin/wp-cli.phar --path=/home/username/example.com/public_html/wpdir/ import test.xml --authors=skip --skip=0 Error: WordPress Importer needs to be activated. Try 'wp plugin activate wordpress-importer'. $
WordPress Importer をアクティベート。(使い終わったら deactivate する)
$ php8.3 ~/bin/wp-cli.phar --path=/home/username/example.com/public_html/wpdir/ plugin activate wordpress-importer
Plugin 'wordpress-importer' activated.
Success: Activated 1 of 1 plugins.
$
準備が整ったのでインポート。マルチサイトの子サイトにインポートしたいので –url で指定。
$ php8.3 ~/bin/wp-cli.phar --path=/home/username/example.com/public_html/wpdir/ --url=https://example.com/child-site-path/ import test.xml --authors=skip --skip=0
以上で無事に 3,000ファイルほどの画像がインポートできました。
今後も使いそうなのでエイリアスを定義。
$ echo -e 'alias wp="/usr/bin/php8.3 ~/bin/wp-cli.phar"' >> ~/.bashrc $ source ~/.bashrc $ which wp alias wp='php8.3 ~/bin/wp-cli.phar' /usr/bin/php8.3 $
参考 エックスサーバーで最新のWP-CLIを使う|greencider(グリーンサイダー)
参考 wp import – WP-CLI Command | Developer.WordPress.org
