در نرمافزار مدیریت محتوای WordPress قابلیت جستجو کردن یک کلمه یا عبارت و جایگزین کردن آن با کلید ترکیبی Ctrl + F انجام میشود اما چگونه میتوان در تمام پستهای یک وبسایت وردپرسی عبارتی را Search و سپس با عبارت دیگری جایگزین یا Replace کرد؟
برای انجام این کار میتوان از افزونهها استفاده کرد اما بدون افزونه هم میتوان با یک کوئری ساده MySQL این کار را انجام داد. جایگزین کردن یک عکس، یک جمله یا کلمه، یک یا چند تگ مثل div و p و ... به همراه کلاسها و استایلهای هر یک، از طریق دستورات ساده که دیتابیس وردپرس را دستکاری میکنند، امکانپذیر است.
در این مقاله به روش جایگزین کردن عبارتها در تمام پستهای یک وبسایت وردپرسی میپردازیم. با ما همراه شوید.
در چه مواردی از Find و Replace در دیتابیس WordPress استفاده میکنیم؟
تصور کنید که در بسیاری از پستهای وبسایت خود از کلمهای اشتباه استفاده کردهاید و یا لینک مربوط به یک فایل عکس، فایل زیپ یا هر نوع فایل دیگری را قرار دادهاید که به دلایل مختلف در حال حاضر از کار افتاده است و باید لینک دیگری را به جای آن استفاده کنید.
مثال دیگر و پیچیدهتر این است که از یک کلاس خاص برای طراحی استایل عکسها، برخی بلوکهای متن یا جداول و ... استفاده کردهاید اما به دلایلی تصمیم گرفتهاید که طراحی سایت خود را تغییر دهید و لازم است کلاس یا استایل اینلاینی که استفاده شده، تغییر کند.
مثال بعدی مربوط به حالتی است که از شورتکدهای مربوط به پلاگینهای وردپرس استفاده کردهاید اما تصمیم گرفتهاید که برای سبکتر کردن وبسایت خود، Shortcode استفاده شده را حذف کنید و به جای آن از یک div یا span و یا ... با کلاس خاصی استفاده کنید و سپس استایل لازم را در فایل CSS سایت خود اضافه کنید.
در تمام این موارد اگر یک یا چند پست ساده در سایت وجود داشته باشد، روش تغییر دادن دستی کارساز است اما اگر تعداد پستها زیاد باشد، چگونه باید تمام موارد را شناسایی و ویرایش کرد؟
قابلیت جستوجوی متن در پستهای وردپرس، بسیار ساده است و برای کسانی مفید است که صرفاً چند مرتبه یک عبارت خاص را استفاده کردهاند و میخواهند آن را تغییر دهند. زمانی که پستها زیاد باشد و تعداد موارد کاربرد عبارت اشتباه زیاد باشد، بهترین و سادهترین روش این است که از کوئریهای MySQL استفاده کنیم و در عرض چند ثانیه، هزاران پست را ویرایش کنیم.
شروع تغییر دادن دیتابیس وردپرس و ویرایش عبارت دلخواه
قبل از هر چیز دقت کنید که نمیتوان تغییری که در دیتابیس ایجاد شده را Undo کرد! بنابراین باید از آن بکاپ تهیه کرد که این کار در cPanel یا Direct Admin بسیار ساده است و حجم فایل بکاپ حتی در مورد وبلاگهای بزرگ حداکثر چند مگابایت یا چند ده مگابایت است. بنابراین یک بکاپ ساده تهیه کنید و مراحل را ادامه دهید.
برای بکاپ گرفتن میتوان از phpMyAdmin نیز استفاده کرد که روش مطمئنتری است و با توجه به تغییراتی که در ادامه به کمک همین ابزار در دیتابیس میدهیم، استفاده از آن سادهتر و سریعتر است.
چگونه از دیتابیس به کمک phpMyAdmin بکاپ بگیریم و بکاپی را بازگردانی کنیم؟
پس از ورود به حساب کاربری خود در کنترل پنل هاست به دنبال گزینهی phpMyAdmin بگردید و روی آن کلیک کنید. این گزینه معمولاً در گروه ابزارهای کار با database قرار دارد اما ممکن است در برخی کنترل پنلها نیز موقعیت آن متفاوت باشد. تصویر زیر به cPanel مربوط میشود:
و این تصویر نیز به دایرکت ادمین مربوط است:
پس از اجرا کردن phpMyAdmin در سمت چپ صفحه روی دیتابیس سایت وردپرسی موردنظر خود کلیک کنید چرا که قرار نیست از تمام جداول بکاپ تهیه کنیم.
اکنون در بالای صفحه روی تب Export کلیک کنید. حالت پیشفرض یا Quick فایلی با پسوند sql در اختیار شما قرار میدهد که نسبتاً حجیم است اما به راحتی فشرده میشود. اگر حجم مهم نیست همین حالت را انتخاب کرده و روی Go کلیک کنید تا بکاپ دانلود شود.
در صورت نیاز به فایل فشرده با فرمت zip معمولی و یا gzip، روی حالت Custom کلیک کنید و سپس در بخش Output از منوی کرکرهای Compression حالت zipped یا gzipped را انتخاب نمایید و در نهایت روی Go کلیک کنید تا فایل فشرده و کمحجم، دانلود شود.
برای بازگردانی بکاپ، ابتدا از سمت چپ روی دیتابیس سایت وردپرسی خود کلیک کنید و سپس در بالای صفحه تب Import را انتخاب کنید. در این تب روی Choose File کلیک کنید و فایل زیپشده، جیزیپشده یا sql معمولی بدون فشردهسازی را آدرسدهی کنید و سپس روی Go در پایین صفحه کلیک کنید تا دیتابیس با تنظیمات پیشفرض، ایمپورت یا بازگردانی شود.
جستوجو و جایگزین کردن عبارت دلخواه با پلاگین Better Search Replace
اولین روش که نیازی به دستورات ظاهراً پیچیده ندارد، مبتنی بر یک پلاگین رایگان و قدرتمند به اسم Better Search Replace است که میتوان آن را از مخزن وردپرس دانلود و نصب کرد:
و مراحل استفاده از این افزونه:
برای دسترسی به تنظیمات این افزونه، در پنل مدیریت سایت وردپرسی روی ابزارها یا Tools کلیک کنید و سپس گزینهی Better Search Replace را انتخاب کنید.
ابتدا روی تب Search/Replace کلیک کنید.
در فیلد اول یا Search for عبارتی که میخواهید تغییر دهید را وارد کنید.
در فیلد Replace with عبارت جدید را وارد کنید.
جدول مربوط به پستهای وردپرس که در حالت پیشفرض wp_posts نام دارد را از فیلد بعدی انتخاب کنید.
در صورت مهم بودن بزرگ یا کوچک بودن حروف، تیک گزینهی Case-insensitive? را حذف کنید.
برای انجام تست و سپس جایگزین کردن عبارت، تیک Run as dry run? را اضافه کنید تا اشتباهی رخ ندهد.
اگر دیتابیس سایت شما بسیار حجیم باشد و هاست ارزانی در اختیار داشته باشید، ممکن است زمان اجرای سرچ و ریپلیس بسیار زیاد شود و کار به درستی انجام نشود. در این صورت از تب دوم یعنی Settings استفاده کنید و Max Page Size را کاهش دهید تا مشکل صفحهی سفید پس از اجرای دستور جایگزینی، برطرف شود.
آموزش جایگزین کردن عبارت در تمام پستهای وردپرس به کمک phpMyAdmin و MySQL Query
برای استفاده از phpMyAdmin ابتدا وارد پنل هاست سایت خود شوید. در کنترل پنل هاست خود به دنبال گزینهی phpMyAdmin بگردید و روی آن کلیک کنید. این گزینه معمولاً در گروه ابزارهای کار با database قرار دارد اما ممکن است در برخی کنترل پنلها نیز موقعیت آن متفاوت باشد. تصویر زیر به cPanel مربوط میشود:
و این تصویر نیز به دایرکت ادمین مربوط است:
پس از اجرا کردن phpMyAdmin در سمت چپ صفحه روی دیتابیس سایت وردپرسی موردنظر خود کلیک کنید. قدم بعدی کلیک کردن روی تب SQL است.
اکنون میتوانید دستور زیر را برای تغییر دادن هر جدول دلخواهی استفاده کنید:
- در دستور فوق به جای TABLE_NAME میبایست نام جدول را قرار داد که در مورد جدول پستهای وردپرس، نام پیشفرض wp_posts است.
- به جای FIELD_NAME میبایست نام فیلد موردنظر خود را قرار داد که در مورد متن پستها، فیلد post_content استفاده میشود.
- به جای SEARCH و REPLACE نیز عبارت اصلی و عبارت جایگزین را قرار دهید.
به عبارت دیگر اگر هدف شما این باشد که به جای کلمهی "it-planet'.ir" از "www.it-planet.ir" استفاده کنید، کافی است دستور زیر را وارد کنید:
برای اعمال تغییر روی دکمهی Go کلیک کنید اما بهتر است قبل از انجام تغییر، روی Simulate query کلیک کنید تا تعداد مواردی که تغییر میکند، نشان داده شود و اگر تعداد به نظر منطقی و صحیح میرسید، روی Go کلیک کنید تا تغییر واقعی اعمال شود.
برای تغییر دادن کلاسها و استایلها نیز میتوان از همین دستور ساده استفاده کرد با این تفاوت که به جای عبارتهای ساده، از تگهای HTML مثل <div> و span و ... استفاده میشود. به عنوان مثال اگر بخواهیم تمام پاراگرافهای متن، کلاسی به اسم simple داشته باشند و سپس در CSS برای این کلاس استایلی تعریف کنیم، کافی است از دستور زیر استفاده شود:
برای تغییر دادن کلمهی اشتباه در تیتر پستها، کافی است به جای فیلد post_content از post_title استفاده کنید و به همین ترتیب برای تغییر کلمات اشتباه در چکیده یا Excerpt از post_excerpt استفاده نمایید.
توجه کنید که جدول wp_posts وردپرس شامل فیلدهایی به جز فیلد متن پست است، مثل post_excerpt و post_title. به جدول زیر توجه کنید:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
ID | bigint(20) unsigned | PRI & IND Pt4 | auto_increment | ||
post_author | bigint(20) unsigned | IND | 0 | ||
post_date | datetime | IND Pt3 | 0000-00-00 00:00:00 | ||
post_date_gmt | datetime | 0000-00-00 00:00:00 | |||
post_content | longtext | ||||
post_title | text | ||||
post_excerpt | text | ||||
post_status | varchar(20) | IND PT2 | publish | ||
comment_status | varchar(20) | open | |||
ping_status | varchar(20) | open | |||
post_password | varchar(20) | ||||
post_name | varchar(200) | IND | |||
to_ping | text | ||||
pinged | text | ||||
post_modified | datetime | 0000-00-00 00:00:00 | |||
post_modified_gmt | datetime | 0000-00-00 00:00:00 | |||
post_content_filtered | longtext | ||||
post_parent | bigint(20) unsigned | IND | 0 | ||
guid | varchar(255) | ||||
menu_order | int(11) | 0 | |||
post_type | varchar(20) | IND Pt1 | post | ||
post_mime_type | varchar(100) | ||||
comment_count | bigint(20) | 0 |
wpbeginnerسیارهی آیتی
برای کلمات فارسی:
نکته: از نظر ظاهری در کلمات فارسی، جای دو کلمه جابجا نمایش داده میشه
UPDATE `wp_posts` SET `post_title` = REPLACE(`post_title`, ‘شاباش’, ‘لپ’) WHERE `post_title` LIKE ‘%شاباش%’ COLLATE utf8mb4_bin
سلام
دقیقاً همین جوریه. تو اکثر تکست ادیتورهای آنلاین و مثلاً ادیتور تکست cPanel و ادیتور کوئریها در phpMyAdmin این مشکل وجود داره و باید دقت کرد.
من همیشه به جای فارسی، انگلیسی یه چیزی تایپ میکنم، بعد که کوئری رو کامل نوشتم، میان اون کلمههای انگلیسی رو جایگزین میکنم با عبارتی که فارسیه و میخوام جایگزین کنم که مشکل پیش نیاد.
دیتابیس ادیت کردن شوخی بردار نیست، باید دقت کرد.
یه روش دیگه هم برای ادیت دیتابیس وردپرس هست که سادهتره. فرصت بشه مینویسم.
عالی