خبرنامه
خبرنامه

اسکریپت تغییر دامنه در وردپرس (MySQL / MariaDB)

به پایین اسکرول کنید
امید بداق
امید بداق
من
  • محل سکونت:
    ایران
  • شهر:
    ارومیه
  • سن:
    27

مهر 21, 1404

۵:۲۴ ب٫ظ

امید بداق

این کوئری که نوشتم وقتی اجرا کنی و دامنه قدیمی و جدیدتو در چند ثانیه تغییر میده فقط قبلش حتما بکاپ بگیر از دیتابیس.
کل لینک‌های دامنه قبلی به جدید تغییر کنن،
بخش‌هایی مثل guid و serialized data خراب نشن،
بتونی با اطمینان اجراش کنی.

در ادامه نسخه‌ی کامل، امن و حرفه‌ای‌تر رو برات نوشتم

-- 🚨 همیشه قبل از هر چیز از دیتابیس بک‌آپ بگیر:
-- mysqldump -u username -p database_name > backup_before_domain_change.sql;

START TRANSACTION;

-- 1️⃣ پست‌ها (محتوا و لینک GUID)
-- ⚠️ اگر نمی‌خوای GUID عوض شه (برای RSS/شناسه‌ها)، خط دوم را کامنت کن
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'https://oldomain.com', 'https://newdomain.com'),
    guid = REPLACE(guid, 'https://oldomain.com', 'https://newdomain.com')
WHERE post_content LIKE '%oldomain.com%' OR guid LIKE '%oldomain.com%';

-- 2️⃣ متادیتای پست‌ها
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, 'https://oldomain.com', 'https://newdomain.com')
WHERE meta_value LIKE '%oldomain.com%';

-- 3️⃣ گزینه‌ها (Site URL، Home URL، و سایر تنظیمات)
UPDATE wp_options
SET option_value = REPLACE(option_value, 'https://oldomain.com', 'https://newdomain.com')
WHERE option_value LIKE '%oldomain.com%';

-- 4️⃣ متادیتای دیدگاه‌ها
UPDATE wp_commentmeta
SET meta_value = REPLACE(meta_value, 'https://oldomain.com', 'https://newdomain.com')
WHERE meta_value LIKE '%oldomain.com%';

-- 5️⃣ محتوای دیدگاه‌ها
UPDATE wp_comments
SET comment_content = REPLACE(comment_content, 'https://oldomain.com', 'https://newdomain.com')
WHERE comment_content LIKE '%oldomain.com%';

-- 6️⃣ کاربران (اختیاری — اگر URL در bio یا meta ذخیره شده)
UPDATE wp_usermeta
SET meta_value = REPLACE(meta_value, 'https://oldomain.com', 'https://newdomain.com')
WHERE meta_value LIKE '%oldomain.com%';

UPDATE wp_users
SET user_url = REPLACE(user_url, 'https://oldomain.com', 'https://newdomain.com')
WHERE user_url LIKE '%oldomain.com%';

-- 7️⃣ محتواهای افزونه‌ها (در صورت وجود جدول‌های custom)
-- اگر پلاگین‌هایی داری مثل WooCommerce، ACF یا RankMath، اون‌ها هم معمولاً
-- در جدول‌هایی مثل wp_woocommerce_order_items، wp_yoast_indexable، یا wp_acf_fields داده ذخیره می‌کنن.
-- در صورت نیاز، مشابه همین الگو اضافه کن.

COMMIT;

نکات مهم

 برای داده‌های serialized (مثل ACF، Elementor و…)

داده‌ها ممکنه اینطوری ذخیره بشن:

# در مسیر وردپرس (SSH)
wp search-replace 'https://oldomain.com' 'https://newdomain.com' --all-tables --precise --recurse-objects
# اگر نمی‌خوای GUID پست‌ها تغییر کنه:
wp search-replace 'https://oldomain.com' 'https://newdomain.com' --all-tables --precise --recurse-objects --skip-columns=guid

🧩 2. بررسی نهایی (تعداد رکوردهایی که هنوز لینک قدیمی دارند)

SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%oldomain.com%';
SELECT COUNT(*) FROM wp_postmeta WHERE meta_value LIKE '%oldomain.com%';
SELECT COUNT(*) FROM wp_options WHERE option_value LIKE '%oldomain.com%';
SELECT COUNT(*) FROM wp_comments WHERE comment_content LIKE '%oldomain.com%';

حمع بندی تغیر دامنه در دیتابیس (MySQL / MariaDB)

بخشتوضیحدستور
پست‌ها و GUIDمحتوا و شناسهUPDATE wp_posts ...
متادیتا پست‌هاACF، افزونه‌هاUPDATE wp_postmeta ...
تنظیمات سایتhome، siteurl و…UPDATE wp_options ...
دیدگاه‌هامتن دیدگاهUPDATE wp_comments ...
کاربرانلینک‌های پروفایلUPDATE wp_users ...
ابزار ایمن‌ترداده‌های سریال‌شدهwp search-replace

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

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