وردپرس‌کالاوردپرس رو ساده‌تر توسعه بده
عضویت VIP

آموزش WP-CLI: ۳۰ دستور کاربردی برای مدیریت، مهاجرت و عیب‌یابی وردپرس

WP-CLI رابط خط فرمان رسمی وردپرس است. در این راهنما ۳۰ دستوری را که در کار روزمره بیشترین استفاده را دارند با مثال واقعی یاد می‌گیرید: از نصب و به‌روزرسانی تا پشتیبان دیتابیس، تغییر دامنه، مهاجرت کامل سایت، عیب‌یابی بدون پیشخوان و دستورهای جدید نسخه‌ی ۳ برای وردپرس ۷.

آموزش WP-CLI: ۳۰ دستور کاربردی برای مدیریت، مهاجرت و عیب‌یابی وردپرس

WP-CLI رابط خط فرمان رسمی وردپرس است. هر کاری که از پیشخوان انجام می‌دهید، از نصب افزونه تا ریست رمز مدیر و جابه‌جایی کامل سایت، با یک دستور و در کسری از زمان انجام می‌شود و قابل اسکریپت‌نویسی است. این راهنما ۳۰ دستوری را که در کار روزمره‌ی توسعه و نگهداری وردپرس بیشترین استفاده را دارند با مثال واقعی توضیح می‌دهد، یک مهاجرت کامل را قدم‌به‌قدم انجام می‌دهد و در پایان دستورهای جدید نسخه‌ی ۳ برای وردپرس ۷ را معرفی می‌کند.

آنچه در این آموزش یاد می‌گیرید

  • نصب WP-CLI روی سرور، هاست اشتراکی و ویندوز و تأیید نصب

  • دستورهای هسته، افزونه، قالب و کاربر که جای چندین کلیک در پیشخوان را می‌گیرند

  • پشتیبان‌گیری، بازگردانی و بهینه‌سازی دیتابیس بدون phpMyAdmin

  • جست‌وجو و جایگزینی امن دامنه در دیتابیس و مهاجرت کامل سایت با پنج دستور

  • عیب‌یابی وقتی پیشخوان در دسترس نیست: صفحه‌ی سفید، هک، کرون و پیوندهای یکتا

  • پرچم‌های سراسری، خروجی JSON، alias برای چند سرور و اسکریپت پشتیبان خودکار

  • دستورهای جدید نسخه‌ی ۳: wp block، wp ability و wp ai برای وردپرس ۷

WP-CLI چیست و چرا هر توسعه‌دهنده‌ای به آن نیاز دارد؟

WP-CLI یک برنامه‌ی PHP است که وردپرس شما را بدون مرورگر بارگذاری می‌کند و به همه‌ی توابع آن دسترسی دارد. وقتی می‌نویسید wp plugin update --all، همان کدی اجرا می‌شود که پیشخوان اجرا می‌کند، فقط بدون رابط گرافیکی، بدون محدودیت زمان اجرای PHP در مرورگر و با قابلیت تکرار در اسکریپت و کران‌جاب. سه مزیت عملی آن برای کار روزمره: سرعت (آپدیت بیست افزونه در چند ثانیه)، دسترسی در شرایط بحرانی (وقتی پیشخوان صفحه‌ی سفید می‌دهد) و خودکارسازی (پشتیبان شبانه، استقرار، مدیریت ده‌ها سایت از یک جا).

نسخه‌ی پایدار فعلی ۲.۱۲ است که از PHP ۸.۴ پشتیبانی می‌کند. نسخه‌ی ۳ در حال توسعه است و دستورهای جدیدی برای بلاک‌ها، Abilities API و AI Client وردپرس ۷ می‌آورد که در بخش پایانی به آن‌ها می‌رسیم.

نصب WP-CLI

نصب WP-CLI در سه قدم: دانلود فایل phar، اجرایی کردن و بررسی با wp --info

نصب سه قدم بیشتر نیست. WP-CLI یک فایل Phar است و به چیزی جز PHP نیاز ندارد.

سرور لینوکسی با دسترسی sudo

# ۱) دانلود
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# ۲) تست قبل از نصب
php wp-cli.phar --info

# ۳) اجرایی کردن و انتقال به PATH
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# ۴) بررسی و به‌روزرسانی
wp --info
wp cli update

خروجی wp --info نسخه‌ی PHP، مسیر php.ini و نسخه‌ی WP-CLI را نشان می‌دهد. اگر PHP خط فرمان با PHP وب‌سرور فرق دارد (مثلاً ۷.۴ در مقابل ۸.۳)، ابتدا این را درست کنید؛ بسیاری از خطاهای عجیب WP-CLI از همین اختلاف نسخه می‌آید.

هاست اشتراکی بدون sudo

بیشتر هاست‌های ایرانی که دسترسی SSH می‌دهند WP-CLI را از قبل نصب کرده‌اند؛ با wp --info امتحان کنید. اگر نبود، نصب در پوشه‌ی خانگی کافی است:

# در هاست اشتراکی بدون دسترسی sudo: نصب در پوشه‌ی خانگی
mkdir -p ~/bin && mv wp-cli.phar ~/bin/wp && chmod +x ~/bin/wp
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
wp --info

ویندوز و محیط لوکال

در ویندوز ساده‌ترین راه WSL است و همان دستورهای لینوکس کار می‌کند. Laragon و LocalWP هم WP-CLI را همراه خود دارند. اگر با داکر کار می‌کنید ایمیج رسمی wordpress:cli را کنار کانتینر وردپرس بالا بیاورید و در wp-env (ابزار رسمی توسعه‌ی بلاک) با npx wp-env run cli wp ... دستورها را اجرا کنید.

دستورهای پایه: هسته، افزونه، قالب و کاربر

نقشه گروه‌های دستور WP-CLI: هسته، افزونه، کاربر، دیتابیس، جست‌وجو و جایگزینی، رسانه، کش و پیکربندی

الگوی همه‌ی دستورها یکی است. با wp help و wp help <گروه> مستندات کامل را همان‌جا در ترمینال می‌خوانید.

نصب و به‌روزرسانی هسته

# دانلود وردپرس فارسی، ساخت wp-config و نصب در یک نفس
wp core download --locale=fa_IR
wp config create --dbname=wpkala --dbuser=wpkala --dbpass='رمز-قوی' --dbhost=localhost --dbcharset=utf8mb4
wp core install --url=https://example.ir --title="وردپرس کالا" --admin_user=modir --admin_password='رمز-قوی' --admin_email=info@example.ir

# نسخه و به‌روزرسانی
wp core version --extra
wp core check-update
wp core update && wp core update-db

# سلامت فایل‌های هسته
wp core verify-checksums

دستور wp core verify-checksums هر فایل هسته را با نسخه‌ی رسمی مقایسه می‌کند و فایل‌های تغییریافته یا اضافه را فهرست می‌کند. این سریع‌ترین راه برای تشخیص آلودگی هسته بعد از هک است. همین کار را برای افزونه‌های مخزن با wp plugin verify-checksums --all انجام دهید.

افزونه و قالب

# نصب و فعال‌سازی چند افزونه با هم
wp plugin install wordpress-seo contact-form-7 --activate

# کدام افزونه‌ها آپدیت دارند؟
wp plugin list --update=available --format=table

# به‌روزرسانی همه به جز یکی
wp plugin update --all --exclude=woocommerce

# غیرفعال کردن همه برای عیب‌یابی و برگرداندن بعدش
wp plugin deactivate --all
wp plugin activate --all

# نصب از آدرس یا فایل زیپ
wp plugin install https://example.ir/files/my-plugin.zip --activate
wp plugin install ./wpkala-blocks.zip --activate

# قالب
wp theme list --status=active
wp theme activate twentytwentyfive
wp theme delete --all --force   # همه به جز قالب فعال

کاربران

# ساخت کاربر با نقش
wp user create ali ali@example.ir --role=editor --display_name="علی رضایی" --user_pass='رمز-قوی'

# ریست رمز مدیر وقتی ایمیل بازیابی کار نمی‌کند
wp user update modir --user_pass='رمز-جدید-قوی'

# خروج از همه‌ی نشست‌های یک کاربر (بعد از نشت رمز)
wp user session destroy modir --all

# فهرست مدیران با تاریخ ثبت‌نام
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

# حذف کاربر و انتقال نوشته‌هایش به کاربر دیگر
wp user delete 15 --reassign=2

ریست رمز با WP-CLI برای مواقعی است که ایمیل بازیابی به دست کاربر نمی‌رسد یا مهاجم ایمیل حساب را عوض کرده. بعد از هر تغییر رمز، نشست‌های فعال را هم با wp user session destroy ببندید وگرنه کسی که وارد شده وارد می‌ماند.

پایگاه داده: پشتیبان، بازگردانی و بهینه‌سازی

# پشتیبان‌گیری فشرده با تاریخ در نام فایل
wp db export - | gzip > backup-$(date +%F).sql.gz

# بازگردانی
gunzip -c backup-1405-07-20.sql.gz | wp db import -

# بررسی و بهینه‌سازی جدول‌ها
wp db check
wp db optimize

# حجم هر جدول
wp db size --tables --human-readable

# اجرای مستقیم SQL
wp db query "SELECT option_name, LENGTH(option_value) AS size FROM wp_options WHERE autoload='yes' ORDER BY size DESC LIMIT 10"

خروجی wp db export با mysqldump ساخته می‌شود و با هر ابزار استانداردی سازگار است. نوشتن به خروجی استاندارد (خط تیره به جای نام فایل) اجازه می‌دهد همان لحظه فشرده کنید و فضای دیسک را هدر ندهید. آخرین دستور، ده گزینه‌ی سنگینی را که در هر بار بارگذاری سایت خوانده می‌شوند نشان می‌دهد؛ معمولاً مقصر کندی سایت‌های قدیمی همین‌جاست.

جست‌وجو و جایگزینی امن در دیتابیس

تغییر دامنه یا انتقال از http به https یعنی هزاران آدرس در جدول‌های مختلف باید عوض شوند. مشکل این‌جاست که وردپرس بخشی از داده‌ها را به صورت سریالایزشده (با طول رشته) ذخیره می‌کند و جایگزینی ساده در فایل SQL آن‌ها را خراب می‌کند. دستور wp search-replace این داده‌ها را می‌شناسد، طول‌ها را دوباره محاسبه می‌کند و تنها راه مطمئن برای این کار است.

# اول همیشه تمرین خشک: فقط می‌شمارد، چیزی تغییر نمی‌دهد
wp search-replace 'http://old.ir' 'https://new.ir' --all-tables --dry-run

# اجرای واقعی با حفظ guid
wp search-replace 'http://old.ir' 'https://new.ir' --all-tables --skip-columns=guid

# گزارش دقیق تغییرات هر جدول
wp search-replace 'old.ir' 'new.ir' --all-tables --report-changed-only

# فقط در جدول‌های مشخص
wp search-replace '/old/path' '/new/path' wp_posts wp_postmeta
  • همیشه با --dry-run شروع کنید. تعداد تغییرات هر جدول را می‌بینید و اگر عدد عجیبی دیدید (مثلاً تغییر در جدول users) قبل از خرابی متوجه می‌شوید.

  • guid را رد کنید. ستون guid شناسه‌ی یکتای هر نوشته برای فیدخوان‌هاست و وردپرس توصیه می‌کند هرگز تغییر نکند.

  • --all-tables را فراموش نکنید. بدون آن فقط جدول‌های با پیشوند فعلی جست‌وجو می‌شوند و جدول‌های افزونه‌هایی با پیشوند متفاوت جا می‌مانند.

مهاجرت کامل سایت با پنج دستور

مهاجرت سایت وردپرس با پنج دستور WP-CLI: db export، انتقال، db import، search-replace و cache flush

کل فرآیند مهاجرت. بدون محدودیت حجم، بدون فایل موقت چند گیگابایتی و قابل تکرار برای استقرارهای بعدی.

این سناریو یک سایت را از سرور قدیم به سرور جدید با دامنه‌ی جدید منتقل می‌کند. فرض بر این است که روی هر دو سرور SSH و WP-CLI دارید و روی سرور جدید دیتابیس خالی ساخته شده است:

# روی سرور قدیم
wp maintenance-mode activate
wp db export site.sql
rsync -az --exclude=wp-content/cache ./ user@new-server:/var/www/site/

# روی سرور جدید (داخل پوشه‌ی سایت)
wp config set DB_NAME new_db
wp config set DB_USER new_user
wp config set DB_PASSWORD 'رمز-جدید'
wp db import site.sql
wp search-replace 'https://old.ir' 'https://new.ir' --all-tables --skip-columns=guid
wp cache flush
wp rewrite flush --hard
wp maintenance-mode deactivate
wp core verify-checksums
  1. حالت تعمیر را فعال می‌کنیم تا در لحظه‌ی خروجی گرفتن سفارش یا دیدگاه جدیدی ثبت نشود.

  2. دیتابیس را خروجی می‌گیریم و فایل‌ها را با rsync منتقل می‌کنیم. پوشه‌ی کش را رد می‌کنیم چون روی سرور جدید دوباره ساخته می‌شود.

  3. اطلاعات اتصال دیتابیس را با wp config set تغییر می‌دهیم؛ نیازی به ویرایش دستی wp-config.php نیست.

  4. دیتابیس را وارد و دامنه را جایگزین می‌کنیم. اگر پروتکل هم عوض شده (http به https) آدرس کامل را بدهید تا هر دو یک‌جا اصلاح شود.

  5. کش و قوانین پیوند یکتا را بازسازی می‌کنیم و در پایان سلامت فایل‌های هسته را تأیید می‌کنیم.

محتوا، رسانه و دسته‌بندی

# فهرست نوشته‌ها با فیلتر و خروجی JSON
wp post list --post_type=post --post_status=publish --fields=ID,post_title,post_date --format=json

# ساخت نوشته از فایل متنی
wp post create ./article.html --post_type=post --post_status=draft --post_title="عنوان مقاله" --post_author=1

# حذف همه‌ی بازبینی‌ها
wp post delete $(wp post list --post_type=revision --format=ids) --force

# بازسازی اندازه‌های تصویر بعد از تغییر قالب
wp media regenerate --yes

# فقط تصاویر یک نوشته
wp media regenerate --image_size=large --yes 123

# وارد کردن تصویر و اتصال به نوشته
wp media import ./cover.webp --post_id=123 --featured_image --alt="متن جایگزین"

# دسته‌ها و برچسب‌ها
wp term list category --fields=term_id,name,slug,count
wp term create category "هوش مصنوعی" --slug=ai

حذف بازبینی‌ها (revisions) در سایت‌های قدیمی گاهی نصف حجم جدول posts را آزاد می‌کند. ترکیب --format=ids با دستور دیگر الگویی است که در WP-CLI زیاد تکرار می‌شود: یک دستور فهرست شناسه‌ها را می‌دهد و دستور دوم روی همه‌ی آن‌ها کار می‌کند.

کش، کرون، تنظیمات و wp-config

# کش آبجکت و transient ها
wp cache flush
wp transient delete --expired
wp transient delete --all

# کرون
wp cron event list
wp cron event run --due-now
wp cron event run wp_version_check

# تنظیمات (option)
wp option get siteurl
wp option update blogdescription "فروشگاه قالب و افزونه‌ی وردپرس"
wp option patch update woocommerce_currency_pos right_space

# تنظیمات wp-config
wp config set WP_DEBUG true --raw
wp config set WP_DEBUG_LOG true --raw
wp config set WP_MEMORY_LIMIT 256M
wp config list

کرون وردپرس به بازدید کاربر وابسته است و در سایت‌های کم‌بازدید عقب می‌افتد. راه حرفه‌ای این است که در wp-config مقدار DISABLE_WP_CRON را true کنید و یک کران‌جاب واقعی هر پنج دقیقه wp cron event run --due-now را اجرا کند. زمان‌بندی انتشار نوشته‌ها، پشتیبان افزونه‌ها و ایمیل‌های ووکامرس دیگر دیر نمی‌شوند.

پرچم‌های سراسری و خروجی قابل پردازش

# اجرا از پوشه‌ی دیگر
wp --path=/var/www/site plugin list

# در شبکه‌ی چندسایته: کدام سایت؟
wp --url=shop.example.ir option get blogname

# بدون بارگذاری افزونه‌ها و قالب (برای وقتی یکی خطا می‌دهد)
wp --skip-plugins --skip-themes plugin deactivate broken-plugin

# خروجی قابل پردازش
wp plugin list --format=json | jq '.[] | select(.update=="available") | .name'
wp user list --format=csv > users.csv
wp post list --format=ids

# اجرای یک تکه PHP در محیط وردپرس
wp eval 'echo get_option("home");'
wp eval-file ./scripts/fix-meta.php

پرچم

کار

کی لازم می‌شود

--path=<dir>

مسیر نصب وردپرس

اجرا از پوشه‌ی دیگر یا در کران‌جاب

--url=<url>

انتخاب سایت در شبکه‌ی چندسایته

هر دستوری در Multisite

--skip-plugins و --skip-themes

بارگذاری نکردن افزونه‌ها یا قالب

وقتی یکی از آن‌ها خطای مهلک می‌دهد

--format=json|csv|ids|yaml

شکل خروجی

اسکریپت‌نویسی و اتصال به ابزارهای دیگر

--fields=a,b

انتخاب ستون‌ها

گزارش تمیز

--user=<login>

اجرا به نام یک کاربر

دستورهایی که مجوز می‌خواهند مثل wp ability run

--allow-root

اجازه‌ی اجرا با root

فقط در داکر؛ روی سرور با کاربر سایت اجرا کنید

--debug

نمایش خطاها و زمان اجرا

عیب‌یابی خود WP-CLI

مدیریت چند سرور با alias

اگر چند سایت یا محیط staging و production دارید، فایل wp-cli.yml در ریشه‌ی پروژه اجازه می‌دهد از لپ‌تاپ خودتان روی سرورها دستور اجرا کنید. WP-CLI از طریق SSH وصل می‌شود و لازم نیست روی سرور لاگین کنید:

# wp-cli.yml در ریشه‌ی پروژه
@prod:
  ssh: deploy@203.0.113.10/var/www/site
@staging:
  ssh: deploy@203.0.113.11/var/www/staging
@all:
  - @prod
  - @staging
wp @prod plugin list --update=available
wp @staging db export staging.sql
wp @all core version

اسکریپت پشتیبان خودکار

ترکیب چند دستور در یک اسکریپت bash و اجرای آن با cron، پشتیبان روزانه‌ای می‌سازد که به هیچ افزونه‌ای وابسته نیست:

#!/usr/bin/env bash
# backup.sh: پشتیبان روزانه با نگهداری ۱۴ نسخه
set -euo pipefail
SITE=/var/www/site
DEST=/backups/site
mkdir -p "$DEST"
cd "$SITE"
wp db export - --skip-themes --skip-plugins | gzip > "$DEST/db-$(date +%F).sql.gz"
tar -czf "$DEST/uploads-$(date +%F).tar.gz" wp-content/uploads
find "$DEST" -type f -mtime +14 -delete

این فایل را با chmod +x backup.sh اجرایی کنید و در crontab خطی مثل 0 3 * * * /var/www/backup.sh بگذارید تا هر شب ساعت سه اجرا شود. برای سایت‌های بزرگ پوشه‌ی uploads را هفتگی و دیتابیس را روزانه بگیرید.

عیب‌یابی وقتی پیشخوان در دسترس نیست

عیب‌یابی وردپرس با WP-CLI وقتی پیشخوان در دسترس نیست: غیرفعال کردن افزونه‌ها، بررسی checksum، ریست رمز، کرون

شش مشکل رایج و دستوری که معمولاً بدون نیاز به FTP یا phpMyAdmin کار را تمام می‌کند.

مشکل

دستور

توضیح

صفحه‌ی سفید یا خطای مهلک بعد از آپدیت

wp plugin deactivate --all سپس فعال کردن یکی‌یکی

اگر WP-CLI هم خطا می‌دهد --skip-plugins را اضافه کنید

شک به هک یا تغییر فایل‌ها

wp core verify-checksums و wp plugin verify-checksums --all

فایل‌های تغییریافته و اضافه فهرست می‌شوند؛ هسته را با wp core download --force --skip-content دوباره بنویسید

کاربر مدیر ناشناس

wp user list --role=administrator

کاربر مشکوک را حذف و نوشته‌هایش را با --reassign منتقل کنید

Error establishing a database connection

wp db check و wp config get DB_HOST

اطلاعات اتصال را با wp config set اصلاح کنید

پیوندهای یکتا ۴۰۴

wp rewrite flush --hard

قوانین و .htaccess بازسازی می‌شود

کرون‌های عقب‌افتاده

wp cron event list و wp cron event run --due-now

برای همیشه: کران‌جاب واقعی به جای کرون وردپرس

کندی ناگهانی

wp transient delete --expired و wp db optimize

بعد از آن autoload سنگین‌ها را با wp db query پیدا کنید

حالت تعمیر گیر کرده

wp maintenance-mode deactivate

فایل .maintenance حذف می‌شود

WP-CLI نسخه‌ی ۳ و وردپرس ۷: دستورهای جدید

دستورهای جدید WP-CLI نسخه ۳ برای وردپرس ۷: wp block، wp ability، wp ai و wp connectors

سه بسته‌ی جدید که با نسخه‌ی ۳ رسمی می‌شوند و از امروز در نسخه‌ی شبانه قابل تست‌اند.

تیم WP-CLI همزمان با وردپرس ۷ سه بسته‌ی دستوری تازه ساخته است. بسته‌ی block-command بلاک‌ها، الگوها، استایل‌ها و قالب‌های سایت را فهرست می‌کند و قالب‌های ویرایشگر سایت را به فایل خروجی می‌دهد؛ برای تیم‌هایی که قالب بلاکی می‌سازند یعنی نسخه‌بندی قالب‌ها در گیت. بسته‌ی ability-command قابلیت‌های ثبت‌شده با Abilities API را فهرست، اعتبارسنجی و اجرا می‌کند؛ همان قابلیت‌هایی که عامل‌های هوش مصنوعی از طریق MCP می‌بینند. و بسته‌ی ai-command مستقیم با AI Client وردپرس ۷ صحبت می‌کند: وضعیت اتصال‌ها، تولید متن و تصویر از خط فرمان.

# نسخه‌ی شبانه برای تست دستورهای جدید
wp cli update --nightly

# یا نصب جداگانه‌ی بسته‌ها روی ۲.۱۲
wp package install wp-cli/block-command:dev-main
wp package install wp-cli/ability-command:dev-main

# بلاک‌ها و قالب‌های سایت
wp block type list --namespace=core --format=table
wp block pattern list --category=buttons
wp block template export twentytwentyfive//single --stdout

# Abilities API (وردپرس ۶.۹ به بالا)
wp ability list --public
wp ability run core/get-site-info --user=modir --format=json

# AI Client وردپرس ۷ (بسته‌ی wp-cli/ai-command)
wp ai status
wp connectors list
wp ai generate text 'سه عنوان کوتاه برای مقاله‌ی آموزش WP-CLI پیشنهاد بده'

این بسته‌ها به WP-CLI نسخه‌ی ۳ نیاز دارند که هنوز به صورت پایدار منتشر نشده است. برای تست از نسخه‌ی شبانه استفاده کنید و در سرور واقعی روی ۲.۱۲ بمانید. اگر مقاله‌ی اتصال وردپرس به هوش مصنوعی را خوانده‌اید، wp ai status همان بررسی is_supported_for_text_generation() است، فقط از ترمینال.

۳۰ دستور در یک نگاه

#

دستور

کار

۱

wp core download --locale=fa_IR

دانلود وردپرس فارسی

۲

wp core install

نصب با یک دستور

۳

wp core update

به‌روزرسانی هسته

۴

wp core verify-checksums

بررسی سلامت فایل‌های هسته

۵

wp plugin install --activate

نصب و فعال‌سازی افزونه

۶

wp plugin update --all

به‌روزرسانی همه‌ی افزونه‌ها

۷

wp plugin list --update=available

افزونه‌های دارای آپدیت

۸

wp plugin deactivate --all

غیرفعال کردن همه برای عیب‌یابی

۹

wp theme activate

فعال کردن قالب

۱۰

wp user create

ساخت کاربر با نقش

۱۱

wp user update --user_pass

ریست رمز

۱۲

wp user session destroy --all

خروج از همه‌ی نشست‌ها

۱۳

wp db export

پشتیبان دیتابیس

۱۴

wp db import

بازگردانی دیتابیس

۱۵

wp db check / optimize

بررسی و بهینه‌سازی

۱۶

wp db query

اجرای SQL

۱۷

wp search-replace --dry-run

پیش‌نمایش جایگزینی

۱۸

wp search-replace --all-tables --skip-columns=guid

تغییر دامنه

۱۹

wp post list --format=ids

فهرست شناسه‌ها برای دستورهای زنجیره‌ای

۲۰

wp post delete --force

حذف نوشته یا بازبینی‌ها

۲۱

wp media regenerate

بازسازی اندازه‌های تصویر

۲۲

wp media import

وارد کردن تصویر

۲۳

wp term list

فهرست دسته‌ها و برچسب‌ها

۲۴

wp cache flush

پاک کردن کش آبجکت

۲۵

wp transient delete --expired

پاک کردن transient های منقضی

۲۶

wp cron event run --due-now

اجرای کرون‌های عقب‌افتاده

۲۷

wp option get / update

خواندن و تغییر تنظیمات

۲۸

wp config set

تغییر wp-config بدون ویرایشگر

۲۹

wp rewrite flush --hard

بازسازی پیوندهای یکتا

۳۰

wp cli update

به‌روزرسانی خود WP-CLI

خطاهای رایج WP-CLI

پیام یا نشانه

علت

راه‌حل

YIKES! It looks like you're running this as root

اجرا با کاربر root

با کاربر مالک فایل‌ها اجرا کنید: sudo -u www-data wp ...؛ فقط در داکر از --allow-root استفاده کنید

Error: This does not seem to be a WordPress installation

در پوشه‌ی اشتباه هستید

به ریشه‌ی سایت بروید یا --path بدهید

PHP Fatal error: Allowed memory size exhausted

حافظه‌ی PHP خط فرمان کم است

php -d memory_limit=512M $(which wp) ... یا تنظیم در php.ini خط فرمان

نسخه‌ی PHP با سایت فرق دارد

چند PHP روی سرور

مسیر PHP درست را در PATH بگذارید یا /usr/bin/php8.3 /usr/local/bin/wp ...

Error establishing a database connection

اطلاعات wp-config یا میزبان دیتابیس

wp config get DB_HOST را بررسی کنید؛ در داکر نام سرویس را به جای localhost بدهید

دستور کند است یا هنگ می‌کند

افزونه‌ای در بارگذاری خطا یا درخواست خارجی دارد

--skip-plugins و --debug را امتحان کنید

خروجی فارسی به‌هم‌ریخته

ترمینال UTF-8 نیست

در ویندوز chcp 65001 و فونت مناسب؛ در لینوکس locale را UTF-8 کنید

جمع‌بندی

WP-CLI ابزاری نیست که فقط حرفه‌ای‌ها لازم داشته باشند. سه دستور wp plugin update --all، wp db export و wp search-replace --dry-run به تنهایی ساعت‌ها در ماه صرفه‌جویی می‌کنند و در روز بحران، وقتی پیشخوان سفید است، تنها راه نجات سریع‌اند. از همین امروز سه کار انجام دهید: WP-CLI را روی سرور بررسی یا نصب کنید، اسکریپت پشتیبان این مقاله را در cron بگذارید و مهاجرت بعدی را به جای افزونه با پنج دستور انجام دهید.

اگر بلاک یا افزونه می‌سازید، مقاله‌ی ساخت بلاک سفارشی وردپرس کالا را بخوانید؛ همان پروژه با wp plugin install ./wpkala-blocks.zip --activate نصب و با wp block type list --namespace=wpkala بررسی می‌شود. مقاله‌ی بعدی این سری درباره‌ی دیپلوی وردپرس با Git و GitHub Actions است که دقیقاً روی همین دستورها ساخته می‌شود.

سؤال‌های متداول

WP-CLI برای چه کسانی مناسب است؟

هر کسی که به SSH سایتش دسترسی دارد. لازم نیست برنامه‌نویس باشید؛ دستورهای پایه مثل به‌روزرسانی افزونه‌ها، پشتیبان دیتابیس و ریست رمز را هر مدیر سایتی می‌تواند در چند دقیقه یاد بگیرد و از آن به بعد سریع‌تر از پیشخوان کار کند.

آیا WP-CLI روی هاست اشتراکی کار می‌کند؟

اگر هاست دسترسی SSH بدهد بله. بسیاری از هاست‌های ایرانی آن را از قبل نصب کرده‌اند و با wp --info می‌فهمید. اگر نصب نبود، فایل Phar را در پوشه‌ی خانگی خودتان بگذارید و به PATH اضافه کنید؛ نیازی به sudo نیست.

استفاده از WP-CLI خطرناک نیست؟

WP-CLI همان کارهای پیشخوان را انجام می‌دهد و نه بیشتر. خطر در دستورهای حذف و جایگزینی است که پیش از اجرا تأیید نمی‌گیرند. قاعده‌ی ساده: قبل از هر کار بزرگ wp db export بگیرید و برای search-replace همیشه اول با --dry-run تمرین کنید.

فرق wp search-replace با جایگزینی در فایل SQL چیست؟

وردپرس بخشی از داده‌ها را سریالایزشده با طول رشته ذخیره می‌کند. جایگزینی متنی در فایل SQL طول‌ها را به‌هم می‌زند و تنظیمات قالب و افزونه‌ها خراب می‌شود. WP-CLI این داده‌ها را می‌شناسد و طول را دوباره محاسبه می‌کند، به همین دلیل تنها روش مطمئن تغییر دامنه است.

می‌توانم چند سایت را از یک جا مدیریت کنم؟

بله. با تعریف alias در فایل wp-cli.yml و اتصال SSH، از لپ‌تاپ خودتان روی هر سرور دستور اجرا می‌کنید. گروه @all اجازه می‌دهد یک دستور روی همه‌ی سایت‌ها هم‌زمان اجرا شود، مثلاً بررسی نسخه یا به‌روزرسانی افزونه‌ها.

WP-CLI نسخه‌ی ۳ کی منتشر می‌شود و چه چیزی دارد؟

تاریخ قطعی اعلام نشده و نسخه‌ی پایدار فعلی ۲.۱۲ است. نسخه‌ی ۳ دستورهای wp block برای بلاک‌ها و قالب‌های سایت، wp ability برای Abilities API و wp ai برای AI Client وردپرس ۷ را می‌آورد. همه‌ی این‌ها الان در نسخه‌ی شبانه یا با wp package install قابل تست‌اند.

کرون وردپرس را چطور با WP-CLI قابل اعتماد کنم؟

در wp-config مقدار DISABLE_WP_CRON را true کنید تا کرون به بازدید کاربر وابسته نباشد، سپس یک کران‌جاب سیستمی هر پنج دقیقه دستور wp cron event run --due-now را اجرا کند. زمان‌بندی انتشار، پشتیبان‌گیری و ایمیل‌های ووکامرس دیگر عقب نمی‌افتند.

  • ۱۳ دقیقه مطالعه
نویسندهمدیریت

نظرات کاربران

ثبت نظر و امتیاز

هنوز نظری ثبت نشده؛ اولین نظر را شما بنویسید.

نظر و امتیاز خود را بنویسید

ایمیل شما منتشر نمی‌شود. نظرها پس از بازبینی منتشر می‌شوند.

با ارسال نظر، قوانین انتشار نظرات سایت را می‌پذیرید.

مطالب مرتبط

اگر این مقاله برایتان مفید بود، این‌ها را هم بخوانید

محیط توسعه لوکال وردپرس در ۱۴۰۵ با wp-env، Docker، Playground، Studio و LocalWP
توسعه و کدنویسی وردپرس

محیط توسعه‌ی لوکال وردپرس در ۱۴۰۵: wp-env، Docker، Playground، Studio و LocalWP

جایگزین‌های امروزی XAMPP برای توسعه‌ی وردپرس: wp-env ابزار رسمی، Docker Compose برای تیم، Playground برای اجرا داخل مرورگر و Studio و LocalWP برای طراحان. با فایل‌های پیکربندی آماده، Blueprint برای دمو و نکته‌های مخصوص اینترنت ایران.

۹ دقیقه مطالعه
REST API وردپرس: اندپوینت سفارشی، احراز هویت با Application Password، کش و امنیت
توسعه و کدنویسی وردپرس

REST API وردپرس: ساخت اندپوینت سفارشی، احراز هویت با Application Password، کش و امنیت

REST API راه استاندارد اتصال اپ موبایل، سایت هدلس، سرویس‌های اتوماسیون و هوش مصنوعی به وردپرس است. در این راهنما یک API واقعی محصولات می‌سازید، چهار روش احراز هویت را مقایسه می‌کنید، کش را در چهار لایه می‌چینید و با چک‌لیست امنیت API را آماده‌ی انتشار می‌کنید.

۱۲ دقیقه مطالعه
هوک‌های وردپرس به زبان ساده: اکشن، فیلتر و ۲۰ مثال واقعی بدون افزونه
توسعه و کدنویسی وردپرس

هوک‌های وردپرس به زبان ساده: اکشن، فیلتر و ۲۰ مثال واقعی بدون افزونه

هوک‌ها راه رسمی تغییر رفتار وردپرس بدون دست زدن به هسته و افزونه‌ها هستند. در این راهنما اکشن و فیلتر را با تصویر یاد می‌گیرید، چهار پارامتر add_action را باز می‌کنیم، جای درست کد و ترتیب اجرای هوک‌ها را می‌بینید و ۲۰ مثال آماده‌ی کپی برای محتوا، امنیت، ورود، پیشخوان، ووکامرس و کرون می‌گیرید.

۱۳ دقیقه مطالعه
دیپلوی وردپرس با Git و GitHub Actions روی هاست ایرانی
توسعه و کدنویسی وردپرس

دیپلوی وردپرس با Git و GitHub Actions روی هاست ایرانی (راهنمای کامل)

هر تغییر کد با یک git push به صورت خودکار، تست‌شده و قابل بازگشت روی سرور بنشیند. در این راهنما یک پایپ‌لاین کامل GitHub Actions برای وردپرس می‌سازید: ساختار ریپو، کلید دیپلوی، بیلد قالب و بلاک، rsync، WP-CLI، استقرار اتمیک، staging با تأیید انسانی و سه استراتژی مخصوص هاست‌های ایرانی.