
به اشتراک بگذارید

به اشتراک بگذارید
آموزش وردپرس | بلاگ وبداده
جستجو و جایگزینی متن در وردپرس (Find and Replace)

| روش | سطح دشواری | امنیت دادهی سریالایز | بهترین کاربرد |
|---|---|---|---|
| افزونه Better Search Replace | آسان | امن (پشتیبانی کامل) | اکثر کاربران؛ تغییر دامنه و اصلاح لینک |
| خط فرمان WP-CLI | متوسط | امن (unserialize خودکار) | کاربران حرفهای با دسترسی SSH |
| SQL خام در phpMyAdmin | سخت | پرریسک (احتمال خرابی) | متن ساده در جدولهای غیرسریالایز |
| فیلتر the_content | متوسط | بدون تغییر دیتابیس | جایگزینی موقت و فقط نمایشی |

برای اکثر کاربران، افزونهی رایگان Better Search Replace بهترین گزینه است. این افزونه با بیش از یک میلیون نصب فعال، از دادههای سریالایز پشتیبانی میکند، قابلیت اجرای آزمایشی (Dry Run) دارد و اجازه میدهد جدولهای موردنظر را انتخاب کنید. برای بیشتر کارها مثل تغییر دامنه و اصلاح لینکها کاملاً کافی است.
اگر از ابزار درست استفاده کنید، خیر. افزونهها و WP-CLI دادههای سریالایز را بهدرستی مدیریت میکنند و ریسک بسیار پایینی دارند. خطر اصلی زمانی است که با دستور SQL خام در phpMyAdmin روی جدولهای حاوی دادهی سریالایز جایگزینی کنید؛ در این حالت ممکن است تنظیمات ویجتها و افزونهها خراب شوند. به همین دلیل همیشه اول بکاپ بگیرید.
حالت Dry Run کل عملیات جستوجو و جایگزینی را شبیهسازی میکند و گزارش میدهد که چند مورد و در کدام جدولها تغییر خواهد کرد، اما هیچ تغییری را واقعاً ذخیره نمیکند. این یک شبکهی ایمنی عالی است: ابتدا نتیجه را میبینید و اگر درست بود، تغییر را نهایی میکنید.
برای تغییر دامنه یا انتقال از http به https، بهترین گزینهها افزونه Better Search Replace یا دستور wp search-replace هستند، چون آدرسها اغلب داخل دادههای سریالایز ذخیره شدهاند و این دو ابزار آنها را بهدرستی بهروزرسانی میکنند. پس از تغییر، حتماً پیوندهای یکتا را یکبار ذخیره و کش سایت را پاک کنید.
ویرایشگر بلوکی وردپرس امکان جستوجو و جایگزینی درون یک نوشته را دارد، اما ابزار داخلی برای جایگزینی «انبوه» در کل سایت و دیتابیس ندارد. برای آن باید از افزونه، WP-CLI یا روشهای دیتابیسی استفاده کنید.
معمولاً علت، کش است. پس از جایگزینی، کش افزونهی کش و کش مرورگر را پاک کنید. اگر از شبکهی توزیع محتوا (CDN) استفاده میکنید، کش آن را هم خالی کنید. در صورتی که باز هم تغییری دیده نشد، مطمئن شوید جدول درست را برای جستوجو انتخاب کردهاید.
بله، از طریق phpMyAdmin در کنترلپنل هاست میتوانید با دستور SQL جایگزینی کنید، اما این روش پرریسکترین گزینه است و برای دادهی سریالایز توصیه نمیشود. اگر ناچار به استفاده از آن هستید، حتماً ابتدا از دیتابیس خروجی (Export) بگیرید و ترجیحاً فقط روی جدول محتوای نوشتهها (wp_posts) کار کنید.
برای سایتهای کوچک و متوسط معمولاً چند ثانیه است. در سایتهای بزرگ با دیتابیس حجیم، عملیات ممکن است طولانیتر شود و به منابع سرور بیشتری نیاز داشته باشد. اجرای این کار روی هاستی با منابع کافی، احتمال بروز خطای وقفه یا کندی را کاهش میدهد.
اگر پیش از شروع بکاپ گرفته باشید، سادهترین راه بازگردانی همان بکاپ است. برای همین است که تأکید میکنیم بکاپگیری اختیاری نیست. اگر بکاپ ندارید و دادهی سریالایز خراب شده، باید تنظیمات آسیبدیده مثل ویجتها و گزینههای افزونه را دستی بازسازی کنید که کار وقتگیری است.