อัปเดต WordPress, Plugin, Theme พร้อมกันทุกเว็บด้วย WP-CLI

การดูแล WordPress หลายเว็บไซต์บน Cloud VPS ของ de.co.th อาจเสียเวลามากหากต้องเข้า Dashboard ทีละเว็บเพื่ออัปเดต WP-CLI ช่วยให้คุณอัปเดต WordPress Core, Plugin และ Theme ทุกเว็บได้พร้อมกันด้วยคำสั่งเดียว บทความนี้จะแนะนำวิธีทำ Bulk Update อย่างปลอดภัย

ตรวจสอบสถานะ Update ทุกเว็บ

ก่อนอัปเดต ให้ตรวจสอบว่าแต่ละเว็บมี Update อะไรรออยู่บ้าง:

# ตรวจสอบ WordPress Core Update
wp core check-update --path=/var/www/site1
wp core check-update --path=/var/www/site2

# ตรวจสอบ Plugin Update ทุกเว็บ
for site in /var/www/site*/; do
    echo "=== $site ==="
    wp plugin list --update=available --path=$site --format=table
done

สร้าง Script อัปเดตทุกเว็บพร้อมกัน

สร้าง Shell Script สำหรับอัปเดตทุกเว็บอัตโนมัติ พร้อม Backup ก่อนอัปเดต:

#!/bin/bash
# bulk-update-wordpress.sh
set -e

SITES_DIR="/var/www"
BACKUP_DIR="/opt/backups"
DATE=$(date +%Y%m%d_%H%M%S)
LOG="/var/log/wp-bulk-update.log"

echo "[$(date)] Starting bulk update..." >> $LOG

for site in $SITES_DIR/site*/; do
    SITE_NAME=$(basename $site)
    echo "\n=== Updating $SITE_NAME ==="
    
    # Backup Database ก่อน
    wp db export "$BACKUP_DIR/${SITE_NAME}_db_$DATE.sql" --path=$site
    
    # อัปเดต WordPress Core
    wp core update --path=$site
    
    # อัปเดต Database หลังอัปเดต Core
    wp core update-db --path=$site
    
    # อัปเดต Plugin ทั้งหมด
    wp plugin update --all --path=$site
    
    # อัปเดต Theme ทั้งหมด
    wp theme update --all --path=$site
    
    # Flush Cache
    wp cache flush --path=$site
    
    echo "$SITE_NAME updated successfully" >> $LOG
done

echo "[$(date)] Bulk update completed!" >> $LOG

อัปเดตเฉพาะ Plugin ที่ต้องการ

บางครั้งคุณอาจต้องการอัปเดตเฉพาะ Plugin บางตัว ไม่ใช่ทั้งหมด:

# อัปเดตเฉพาะ WooCommerce ทุกเว็บ
for site in /var/www/site*/; do
    wp plugin update woocommerce --path=$site
done

# อัปเดต Plugin เฉพาะที่มี Security Fix
for site in /var/www/site*/; do
    wp plugin update wordfence sucuri-scanner --path=$site
done

ตรวจสอบหลังอัปเดต

หลังจากอัปเดตเสร็จ ควรตรวจสอบสถานะของทุกเว็บ:

# ตรวจสอบว่าทุกเว็บทำงานปกติ
for site in /var/www/site*/; do
    SITE_NAME=$(basename $site)
    URL=$(wp option get siteurl --path=$site)
    HTTP_CODE=$(curl -s -o /dev/null -w '%{http_code}' $URL)
    echo "$SITE_NAME ($URL): HTTP $HTTP_CODE"
done

# ตรวจสอบ WordPress Version ทุกเว็บ
for site in /var/www/site*/; do
    echo "$(basename $site): $(wp core version --path=$site)"
done

ตั้งค่า Auto-Update ด้วย Cron

ตั้ง Cron Job ให้อัปเดตอัตโนมัติทุกสัปดาห์:

# เพิ่ม Cron Job อัปเดตทุกวันจันทร์ตอน 02:00
crontab -e
0 2 * * 1 /opt/scripts/bulk-update-wordpress.sh >> /var/log/wp-bulk-update.log 2>&1

Rollback หากมีปัญหา

หาก Plugin หรือ Theme มีปัญหาหลังอัปเดต สามารถ Rollback กลับ Version เดิมได้:

# Rollback Plugin กลับ Version เดิม
wp plugin install woocommerce --version=8.5.0 --force --path=/var/www/site1

# Restore Database จาก Backup
wp db import /opt/backups/site1_db_20250327.sql --path=/var/www/site1

สรุป

การใช้ WP-CLI สำหรับ Bulk Update WordPress บน Cloud VPS ของ de.co.th ช่วยประหยัดเวลาอย่างมาก โดยเฉพาะเมื่อดูแลหลายเว็บไซต์ สิ่งสำคัญคือต้อง Backup ก่อนอัปเดตทุกครั้ง ตรวจสอบหลังอัปเดต และเตรียม Rollback Plan ไว้เสมอ