エックスサーバーで WordPress のメディアのインポートに WP-CLI を使う

WordPress
記事内に広告が含まれています。

大量のメディアを 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

タイトルとURLをコピーしました