این کوئری که نوشتم وقتی اجرا کنی و دامنه قدیمی و جدیدتو در چند ثانیه تغییر میده فقط قبلش حتما بکاپ بگیر از دیتابیس.
کل لینکهای دامنه قبلی به جدید تغییر کنن،
بخشهایی مثل 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

