タイガーラック クリエイティブブログ
2026
July
08

WP-CLIでWordPressを安全にバージョンアップする

弊社では複数のWordPressサイトを運用していますが、WordPressのコアファイルはgit管理外にしています(カスタムテーマのみgit管理)。
管理画面からもコア更新自体は可能ですが、git管理下のファイルと不整合が起きないよう、コアの更新は管理画面を使わずVPSにSSHログインしてWP-CLIで行う運用にしています。

2026年5月20日にWordPress 7.0「Armstrong」がリリースされたのをきっかけに、社内勉強会でWP-CLIによる安全なバージョンアップ手順を整理したので、その内容を共有します。

WordPressとは

オープンソースのCMSで、世界のWebサイトの約43%で使われており、ブログからコーポレートサイトまで幅広く採用されています。PHPで動作し、プラグインやテーマで機能を拡張できます。

WordPressのバージョンは「メジャー.マイナー.パッチ」の形式(例: 6.5.3)で管理されます。セキュリティ修正を含むパッチリリースは頻繁に行われるため常に最新を維持することが重要で、古いバージョンは攻撃の標的になりやすいという特性があります。

git管理とWP-CLI運用ルール

弊社のWordPressサイトは、カスタムテーマのみをgitで管理しており、WPコア本体はgit管理外です。
管理画面からコアを更新すると、その変更はgitの管理外で行われるため、次回デプロイ時に意図しない上書きや差分の見落としにつながりかねません。そのため、

  • 管理画面(ダッシュボード)からのコア更新は使わない
  • VPSにSSHログインし、WP-CLIでコアファイルを更新する

というルールで運用しています。

WP-CLIとは

WordPress専用のコマンドラインツールです。
管理画面を使わずに、コア・プラグイン・テーマの更新やデータベース操作などをSSH経由で実行できます。

インストール

# ダウンロード
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# 実行権限を付与
chmod +x wp-cli.phar

# パスの通った場所に移動
mv wp-cli.phar /usr/local/bin/wp

# 確認
wp --version --allow-root

補足:
以降のコマンド例には `–allow-root` フラグを付けています。
これはWP-CLIをroot権限で実行する場合に必要なフラグです。
root以外の実行ユーザーで運用している場合は不要なので、環境に合わせて付け外ししてください。

更新前の確認事項

バージョンアップ前に、最低限以下をチェックします。

確認項目内容
PHPバージョン新WPが要求するPHPバージョンをサーバーが満たしているか
プラグインの互換性新WPバージョンに対応したプラグインバージョンがあるか
テーマの互換性カスタムテーマが新バージョンで動作するか
ディスク容量バックアップファイルを置けるだけの空き容量があるか
DBバックアップ更新前に必ず取得する(本番は必須)

PHPバージョンの確認:

php -v

WordPressの必要PHPバージョンは公式サイトで確認します。

以下、`sample-wp` というサイト名を例に、実際の作業フローを紹介します。パスは環境に合わせて読み替えてください。

/var/www/sample-wp.git/sample-wp/www/html/

本番に適用する前に、ステージング(検証用)環境で必ず動作確認してください。
以降のコマンド例は本番相当のパスのみ示していますが、実際は検証環境に対して同じコマンドを先に実行し、問題がないことを確認してから本番に適用する2段階の運用にしています。

バージョンアップの実作業

1. 現在のバージョンを確認

wp core version --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

// 結果
6.8.1

2. 更新可能なバージョンを確認

wp core check-update --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

// 結果
+---------+-------------+----------------------------------------------------------------+
| version | update_type | package_url                                                    |
+---------+-------------+----------------------------------------------------------------+
| 6.8.5   | minor       | https://downloads.wordpress.org/release/ja/wordpress-6.8.5.zip |
| 7.0     | major       | https://downloads.wordpress.org/release/ja/wordpress-7.0.zip   |
+---------+-------------+----------------------------------------------------------------+

マイナー更新とメジャー更新の両方が同時に表示されることがあります。
今回のように7.0系へのメジャー更新が控えている場合は、いきなり飛びつかず慎重に判断するのがポイントです(詳細は後述)。

3. DBバックアップ

公開ディレクトリの外にバックアップ用ディレクトリを用意し、更新前に必ずエクスポートします(本番は必須)。

mkdir -p /var/backups/wordpress

wp db export /var/backups/wordpress/sample_$(date +%Y%m%d).sql \
  --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

4. WPコアの更新

先にステージング環境で更新・動作確認してから、本番に適用するのが鉄則です。

wp core update --version=6.8.5 --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

更新後にバージョンを確認:

wp core version --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

// 結果
6.8.5

5. プラグインの更新

WP-CLIならプラグインも一斉更新できます。

# 更新可能なプラグインの一覧確認
wp plugin list --update=available --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

# 一斉更新
wp plugin update --all --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

# 個別更新
wp plugin update プラグイン名 --path=/var/www/sample-wp.git/sample-wp/www/html/ --allow-root

メジャーバージョンアップについて

`wp core check-update` でメジャーバージョンが表示されても、すぐに飛びつくのではなく慎重に対応すべきです。
今回はまず6.8.5に更新して安定稼働を確認し、後日改めて最新の7.0まで上げました。
その際、以下の点は必ず押さえています。

  • プラグイン・テーマの互換性を事前に確認する
  • 必ずステージング環境で先に試して全機能を確認する
  • プラグインが対応してから上げるのが安全

シェルスクリプト化

毎回コマンドを打つ手間を省くため、一連の作業をシェルスクリプトにまとめました。
VPS上の任意の場所(例: `/opt/scripts/wp-update-sample.sh`)に配置し、`/usr/local/bin/` にシンボリックリンクを貼ると `wp-update-sample` のように呼び出せます。

`SITES` 配列にはステージング・本番それぞれのパスを書けます。
まずステージングのパスだけを書いて実行し、問題がなければ本番のパスに書き換えて再実行する、という使い方を想定しています。

#!/bin/bash

BACKUP_DIR=/var/backups/wordpress
mkdir -p "$BACKUP_DIR"

SITES=(
    /var/www/sample-wp.git/sample-wp/www/html
)

update_site() {
    local path=$1
    local sitename=$(basename "$(dirname "$(dirname "$path")")")
    echo "----------------------------------------"
    echo "更新: $path"
    echo "----------------------------------------"

    if [ ! -d "$path" ]; then
        echo "スキップ: ディレクトリが存在しません"
        return
    fi

    echo "DBバックアップ中..."
    wp db export "$BACKUP_DIR/${sitename}_$(date +%Y%m%d).sql" --path="$path" --allow-root

    wp core update --path="$path" --allow-root
    wp plugin update --all --path="$path" --allow-root
    echo ""
}

echo "===== サイト更新 ====="
for site in "${SITES[@]}"; do
    update_site "$site"
done

echo "===== 完了 ====="

シンボリックリンクの作成:

chmod +x /opt/scripts/wp-update-sample.sh

ln -s /opt/scripts/wp-update-sample.sh /usr/local/bin/wp-update-sample

使い方:

wp-update-sample

まとめ

  • WPコアをgit管理外にしている場合、管理画面からの更新は使わずWP-CLI+SSHで運用するとgit管理との不整合を避けられる
  • 更新前はプラグイン/テーマの互換性・PHPバージョン・ディスク容量・DBバックアップを必ずチェックする
  • ステージング環境で先に更新・動作確認してから本番に適用するのが鉄則
  • メジャーバージョンアップは`wp core check-update`で表示されてもすぐ飛びつかず、プラグイン対応状況を見てから判断する
  • 定型作業はシェルスクリプト化しておくと、ヒューマンエラーを減らしつつ運用の再現性を上げられる

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.