WP-CLI là công cụ dòng lệnh (Command Line Interface) chính thức dành cho WordPress, cho phép bạn quản lý mọi thứ từ cài đặt, cập nhật, backup database đến quản lý users và plugin mà không cần chạm vào giao diện quản trị. Đây là một kỹ thuật quan trọng mà mọi WordPress developer nên thành thạo, giúp bạn làm việc hiệu quả hơn trên mọi thiết bị có terminal. Nếu bạn là developer WordPress đang sử dụng VPS để host WordPress, WP-CLI là công cụ không thể thiếu trong bộ kỹ năng của bạn.
1. WP-CLI là gì?
WP-CLI (wp-cli.org) là một tập hợp các công cụ dòng lệnh giúp bạn quản lý WordPress site mà không cần trình duyệt. Bạn có thể cập nhật plugin, cấu hình multisite, tạo nội dung mới và nhiều hơn thế — tất cả chỉ từ terminal. Đây là công cụ yêu thích của các sysadmin và developer khi làm việc với WordPress trên môi trường server.
Phiên bản hiện tại là WP-CLI 2.12.0, hỗ trợ WordPress 6.0+ và PHP 8.0+. Nếu bạn đã sử dụng LiteSpeed Cache để tối ưu WordPress, kết hợp với WP-CLI bạn sẽ có một quy trình làm việc cực kỳ hiệu quả.
2. Cài đặt WP-CLI
Trên hầu hết các server Linux (Ubuntu, Debian, CentOS), bạn có thể cài đặt WP-CLI chỉ với vài lệnh đơn giản:
# Tải WP-CLI PHAR (PHP Archive)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
# Kiểm tra xem PHAR có hoạt động không
php wp-cli.phar --info
# Đặt quyền thực thi và chuyển vào PATH
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Kiểm tra cài đặt
wp --info
Sau khi cài đặt, hãy chạy wp --info để xác nhận mọi thứ hoạt động. Đầu ra sẽ hiển thị phiên bản PHP, MySQL và đường dẫn WordPress (nếu bạn đang chạy từ thư mục WordPress).
3. Lệnh quản lý Core WordPress
Nhóm lệnh core cho phép bạn quản lý lõi WordPress — cập nhật, kiểm tra phiên bản, tải xuống nền tảng mới.
3.1. Tải WordPress mới
# Tải WordPress phiên bản mới nhất vào thư mục hiện tại
wp core download
# Tải WordPress phiên bản cụ thể (ví dụ 6.4)
wp core download --version=6.4
# Tải WordPress kèm file cấu định
wp core download --locale=vi
3.2. Tạo file wp-config.php
# Tự động tạo wp-config.php từ thông tin database
wp config create --dbname=ten_database
--dbuser=ten_user --dbpass=mat_khau
--dbhost=localhost --locale=vi
# Hoặc sử dụng biến môi trường
export DB_NAME=wordpress
export DB_USER=root
export DB_PASSWORD=secret
wp config create
3.3. Cài đặt WordPress
# Cài đặt WordPress hoàn chỉnh từ dòng lệnh
wp core install
--url="https://example.com"
--title="Site của tôi"
--admin_user="admin"
--admin_password="mat_khau_manh"
--admin_email="[email protected]"
# Kiểm tra phiên bản hiện tại
wp core version
# Kiểm tra xem có bản cập nhật không
wp core check-update
3.4. Cập nhật WordPress
# Cập nhật lên phiên bản mới nhất (LUÔN backup trước!)
wp core update
# Cập nhật lên phiên bản cụ thể
wp core update --version=6.4.3
# Cập nhật database sau khi update
wp core update-db
4. Quản lý Plugin và Theme
Một trong những tính năng mạnh nhất của WP-CLI là quản lý plugin và theme hàng loạt — điều mà giao diện web không thể làm được.
4.1. Plugin commands
# Liệt kê tất cả plugin
wp plugin list
# Liệt kê plugin đang active
wp plugin list --status=active
# Liệt kê plugin cần cập nhật
wp plugin list --update=available
# Cài đặt plugin từ WordPress.org
wp plugin install woocommerce
# Cài đặt plugin từ file ZIP
wp plugin install /path/to/plugin.zip
# Kích hoạt plugin
wp plugin activate woocommerce
# Vô hiệu hóa plugin
wp plugin deactivate woocommerce
# Cập nhật tất cả plugin
wp plugin update --all
# Cập nhật plugin cụ thể
wp plugin update woocommerce elementor
# Xóa plugin (chỉ khi đã deactivate)
wp plugin delete woocommerce
4.2. Theme commands
# Liệt kê theme
wp theme list
# Cài đặt và kích hoạt theme
wp theme install twentytwentyfour --activate
# Cập nhật theme
wp theme update --all
# Kích hoạt theme khác
wp theme activate twentytwentythree
# Xóa theme
wp theme delete twentytwentyone
5. Quản lý Database
Sao lưu và tối ưu database là công việc thường xuyên của mọi WordPress developer.
# Export database ra file SQL
wp db export backup-$(date +%Y%m%d).sql
# Export và nén gzip
wp db export backup-$(date +%Y%m%d).sql.gz
# Import database từ file
wp db import backup-20240701.sql
# Tối ưu database (xóa overhead)
wp db optimize
# Sửa chữa database
wp db repair
# Xem kích thước database
wp db size
# Chạy truy vấn SQL trực tiếp
wp db query "SELECT * FROM wp_options WHERE option_name LIKE '%transient%'" --skip-column-names
Mẹo: Kết hợp WP-CLI với cron job Linux để tự động backup database hàng ngày:
# Thêm vào crontab (chạy lúc 3h sáng mỗi ngày)
0 3 * * * cd /path/to/wordpress && wp db export /backups/wp-$(date +%Y%m%d).sql.gz 2>/dev/null
# Giữ backup 7 ngày gần nhất
0 3 * * * find /backups/ -name "wp-*.sql.gz" -mtime +7 -delete
6. Quản lý Users
# Liệt kê users
wp user list
# Tạo user mới
wp user create khoi.nguyen [email protected]
--role=administrator
--display_name="Nguyễn Khôi"
--user_pass="mat_khau_manh"
# Cập nhật user
wp user update 1 --display_name="Admin Mới" --role=editor
# Xóa user và chuyển bài viết cho user khác
wp user delete 3 --reassign=1
# Thay đổi mật khẩu user
wp user update 1 --user_pass="mat_khau_moi"
# Tạo nhiều users từ file CSV
wp user import-csv users.csv
7. Quản lý Nội dung
# Tạo bài viết mới từ dòng lệnh
wp post create
--post_title="Bài viết tự động"
--post_content="Nội dung bài viết..."
--post_status=publish
--post_category="187,5"
--tags_input="wordpress,wp-cli"
# Tạo page
wp post create --post_type=page
--post_title="Giới thiệu"
--post_status=publish
# Cập nhật bài viết
wp post update 123 --post_title="Tiêu đề mới"
# Xóa bài viết (đưa vào thùng rác)
wp post delete 123
# Xóa vĩnh viễn
wp post delete 123 --force
# Liệt kê bài viết
wp post list --posts_per_page=10 --post_type=post
# Đếm số bài viết
wp post list --post_type=post --format=count
# Tìm kiếm bài viết theo từ khóa
wp post list --search="WP-CLI" --posts_per_page=5
8. WP-CLI với RunCloud
Nếu bạn quản lý WordPress trên RunCloud, WP-CLI đã được cài đặt sẵn và bạn có thể chạy qua user runcloud. Cú pháp chuẩn trên RunCloud như sau:
# Chạy WP-CLI dưới user runcloud
sudo -u runcloud -i -- wp --path=/home/runcloud/webapps/cdev plugin list
# Hoặc vào shell runcloud trước
sudo -u runcloud -i
cd ~/webapps/cdev
wp plugin list
# Backup database trên RunCloud
sudo -u runcloud -i -- wp --path=/home/runcloud/webapps/cdev db export /tmp/backup.sql
# Tìm kiếm và thay thế trong database (khi đổi domain)
sudo -u runcloud -i -- wp --path=/home/runcloud/webapps/cdev search-replace 'http://old.com' 'https://new.com' --skip-columns=guid
Lệnh search-replace cực kỳ hữu ích khi bạn chuyển site từ localhost lên server hoặc đổi domain. WP-CLI xử lý thông minh việc thay thế trong serialized data — điều mà các lệnh sed thông thường không làm được.
9. Cache Management
Khi sử dụng LiteSpeed Cache (như đã hướng dẫn trong bài viết trước), bạn có thể kết hợp với WP-CLI để purge cache nhanh chóng:
# Purge toàn bộ LSCache từ command line
sudo -u runcloud -i -- wp --path=/home/runcloud/webapps/cdev litespeed-purge all
# Purge cache của một bài viết cụ thể
sudo -u runcloud -i -- wp --path=/home/runcloud/webapps/cdev litespeed-purge post 123
# Xóa object cache (Redis/Memcached)
wp cache flush
# Tự động purge cache sau khi cập nhật plugin
wp plugin update --all && wp cache flush && wp litespeed-purge all
10. Script Tự động hóa Toàn diện
Dưới đây là một script bash hoàn chỉnh giúp tự động bảo trì WordPress hàng tuần:
#!/bin/bash
# Auto WordPress Maintenance Script
# Đặt trong crontab: 0 4 * * 0 /path/to/wp-maintenance.sh
WP_PATH="/home/runcloud/webapps/cdev"
BACKUP_DIR="/backups/wordpress"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/wp-maintenance.log"
echo "[] Bắt đầu bảo trì WordPress..." >>
# 1. Backup database
sudo -u runcloud -i -- wp --path= db export /db-.sql.gz
echo " Database backup: db-.sql.gz" >>
# 2. Cập nhật plugin
sudo -u runcloud -i -- wp --path= plugin update --all >> 2>&1
# 3. Cập nhật theme
sudo -u runcloud -i -- wp --path= theme update --all >> 2>&1
# 4. Cập nhật core
sudo -u runcloud -i -- wp --path= core update >> 2>&1
sudo -u runcloud -i -- wp --path= core update-db >> 2>&1
# 5. Tối ưu database
sudo -u runcloud -i -- wp --path= db optimize >> 2>&1
# 6. Xóa transient hết hạn
sudo -u runcloud -i -- wp --path= transient delete --expired >> 2>&1
# 7. Purge cache
sudo -u runcloud -i -- wp --path= litespeed-purge all >> 2>&1
# 8. Xóa backup cũ hơn 30 ngày
find -name "db-*.sql.gz" -mtime +30 -delete
echo "[] Hoàn tất bảo trì WordPress." >>
11. Một số lưu ý quan trọng
- Luôn backup trước khi update: Trước khi chạy
wp core updatehoặcwp plugin update --all, hãy chạywp db exporttrước. - Sử dụng –dry-run: Khi không chắc chắn về kết quả, thêm flag
--dry-runvào lệnh để xem preview mà không thực hiện thay đổi. - Phân quyền đúng: Luôn chạy WP-CLI dưới user web server (www-data, runcloud, nginx) để tránh lỗi permission.
- Kiểm tra alias: Nếu có nhiều site, dùng
wp --url=site2.comhoặc tạo alias trong file.wp-cli/config.yml. - Tương thích với Lando: Nếu bạn dùng Lando cho local development, WP-CLI cũng hoạt động hoàn hảo qua
lando wp.
8. wp db query: Truy vấn database trực tiếp
# Đếm users
wp db query "SELECT COUNT(*) FROM wp_users"
# Tìm post không có thumbnail
wp db query "SELECT ID, post_title FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key='_thumbnail_id')"
# Export database
wp db export backup-$(date +%Y%m%d).sql
# Optimize
wp db optimize
9. wp search-replace: Thay thế dữ liệu an toàn
Cực kỳ hữu ích khi migrate site, thay domain http->https. Luôn dùng –dry-run trước:
# Kiểm tra trước (an toàn)
wp search-replace "http://old.com" "https://new.com" --dry-run
# Chạy thật
wp search-replace "http://old.com" "https://new.com"
# Chỉ thay trong specific table
wp search-replace "old" "new" wp_posts wp_postmeta
# Export report
wp search-replace "old" "new" --dry-run --report-changed-only > report.txt
10. Tự động hoá với Bash Script + Cron
Kết hợp WP-CLI với bash script cho phép tự động bảo trì nhiều site cùng lúc:
#!/bin/bash
# /usr/local/bin/wp-auto-maintenance.sh
SITES=("/var/www/site1" "/var/www/site2")
for SITE in "${SITES[@]}"; do
cd "$SITE" || continue
echo "Processing $SITE"
wp db optimize --allow-root
wp transient delete --all --allow-root
wp cache flush --allow-root
done
# Crontab: chạy lúc 2h sáng mỗi ngày
0 2 * * * /usr/local/bin/wp-auto-maintenance.sh >> /var/log/wp-maintenance.log 2>&1
11. Backup tự động hàng ngày
#!/bin/bash
BACKUP_DIR="/backups/wordpress"
DATE=$(date +%Y-%m-%d)
wp db export "$BACKUP_DIR/db-$DATE.sql"
tar -czf "$BACKUP_DIR/files-$DATE.tar.gz" --exclude=vendor -C /var/www/html .
find "$BACKUP_DIR" -name "*.sql" -mtime +30 -delete
echo "Backup done: $DATE"
12. Lưu ý an toàn
--allow-root: Chỉ dùng khi cần chạy dưới quyền root. Nên dùng user thường có sudo--dry-run: Luôn chạy trước với lệnh nguy hiểm (search-replace, delete)- Rollback plan:
wp db exporttrước khi chạy lệnh nguy hiểm - Không chạy
wp db dropnếu không chắc chắn
12. Kết luận
WP-CLI là công cụ không thể thiếu đối với bất kỳ WordPress developer hay sysadmin nào. Nó giúp bạn tiết kiệm hàng giờ làm việc mỗi tuần thông qua tự động hóa và quản lý từ dòng lệnh. Đặc biệt khi kết hợp với RunCloud và LiteSpeed Cache, bạn có một hệ thống WordPress hoàn chỉnh với hiệu suất cao và quy trình bảo trì tự động.
Hãy bắt đầu với vài lệnh đơn giản hôm nay, và dần dần xây dựng script tự động hóa cho riêng bạn. Nếu có thắc mắc, đừng quên xem tài liệu chính thức tại wp-cli.org/commands.