آموزش حذف کامل افزونه وردپرس به همراه اطلاعات آن از دیتابیس
پاک کردن، غیرفعال کردن و یا حذف افزونههای وردپرسی، از جمله کارهایی است که در روز اول کار با وردپرس، هرکسی یاد میگیرد؛ اما اگر فکر میکنید که به همین راحتی توانستید کلیه آثار افزونه را از سایت خود پاک کنید، کاملا در اشتباه هستید!
«با وجود بیش از ۵۰ هزار افزونه در مخزن وردپرس، چه کسی از تست چند افزونهی بیشتر ناراحت میشود؟ نهایتا افراد با خود میگویند چنانچه کاربردی نبود، آن را پاک میکنیم.»
جمله بالا طرز تفکر بیشتر افرادی است که تازه پا به دنیای وردپرس گذاشتهاند و شناخت کاملی از نحوه کار سیستم مدیریت محتوای وردپرس و همچنین عملکرد دیتابیس MySQL ندارند.
در این مقاله از نت افراز بلاگ، میخواهیم به بررسی این نکته بپردازیم که چطور پس از حذف یک افزونه، میتوانیم کلیه آثار آن، همچون Tableهای باقیمانده در دیتابیس سایت یا شورتکدهای (Shortcode) ساختهشده توسط آن را پاک کنیم. تا انتهای این نوشته همراه ما باشید.
آنچه در این مقاله میخوانید:
علت اصلی نیاز به پاک کردن کامل افزونه چیست؟
بدون شک سیستم مدیریت محتوای وردپرس یکی از محبوبترین CMSهای مورد استفاده در بین وبمسترها است. انعطاف پذیری بسیار عالی این سیستم و تنوع بالای قالب و افزونههای وردپرس، یکی از دلایل محبوبیت بسیار بالای این سیستم است. معمولا افراد برای افزودن امکانات بیشتر به وبسایت وردپرسی خود، اقدام به نصب انواع افزونهها و پلاگینهای مختلف بر روی وبسایت خود میکنند. اما این کار موجب ایجاد مشکلات بسیاری میشود.
جدا از مشکلات رایج مانند کند شدن زمان لود وبسایت و همچنین مصرف بیشتر منابع سرور و افزایش درخواستهای بیشتر بر روی سرویس MySQL، یکی از بزرگترین مشکلات، به وجود آمدن ناسازگاری و بروز خطاهایی است که پس از نصب برخی افزونهها ایجاد میشود. این مشکل ممکن است به دلیل قدیمی بودن کدهای افزونه و همچنین عدم سازگاری کافی کدها با نسخه جاری وردپرس باشد که باعث از کار افتادن وبسایت وردپرسی شما یا ایجاد خطا و مواردی مانند عدم لود صفحه و نمایش صفحه سفید خواهد شد. معمولا بعد غیر فعال کردن و یا حذف برخی افزونهها تمامی فایلها و تنظیمات و Tableهای آن از دیتابیس حذف نمیشوند و مشکلاتی نظیر شلوغ شدن دیتابیس و افزایش حجم دیتابیس سایت شما و همینطور اشغال شدن فضای هاست شما را به همراه خواهد داشت.
حال سوال اینجاست که چطور میتوانم سایت خود را تعمیر کنم و به حالت قبل برگردانم؟ دست نگه دارید نیاز به ریستور بکاپ سایت نخواهید داشت! راه حل مشکل شما در این مقاله است که در ادامه مقاله با ما همراه باشید تا روشهای مختلفی برای حل این مشکل خدمتتون معرفی نماییم.
روش صحیح پاک کردن پلاگینهای وردپرس
دلایل مختلفی ممکن است باعث شود که که شما قصد استفاده از یک افزونه را پس از نصب آن نداشته باشید. زمانی که این اتفاق برای شما رخ میدهد، ابتدا افزونه را غیرفعال کرده و سپس آن را حذف میکنید.
با این وجود، در برخی زمانها، با رفتن به دایرکتوری مربوط به پلاگینها (wp-content > plugins) که در فضای ذخیرهسازی سرویس میزبانی شما قرار دارد، متوجه میشوید که هنوز یک دایرکتوری با نام افزونهای که پاک کردهاید، وجود دارد. بهترین مثال برای این گروه افزونهها، افزونههای بهینهسازی تصاویر یا افزونههای ایجاد بکاپ مثل Duplicator هستند.
اگر تاکنون یک افزونه را بر روی سایت خود نصب کرده باشید و سپس آن را پاک کرده باشید، با نصب مجدد آن افزونه، میبینید که تمامی تنظیماتی که قبلا بر روی افزونه اعمال کردهاید، همچنان بدون کوچکترین تغییری در دسترس هستند! این مسئله میتواند برای شما بسیار خوشحالکننده باشد؛ چراکه دیگر نیازی به ورود مجدد تنظیمات نخواهید داشت، اما آیا تاکنون فکر کردهاید که این تنظیمات چگونه مجددا به صورت خودکار، بر روی افزونه اعمال شدهاند؟
اکثر افزونههای قابل نصب بر روی وردپرس، پس از پاک شدن از روی سایت، تمامی Tableهای خود را بر روی دیتابیس سایت شما باقی میگذارند. از همین رو با پاک کردن یک افزونه از طریق پیشخوان وردپرس، همچنان اطلاعات افزونه، بخشی از فضای دیتابیس سایت شما را اشغال خواهند کرد. با این حساب، شما باید با استفاده از یک روش اصولی افزونه موردنظر و دلخواه خود را برای همیشه از سایت خود حذف کنید. در نظر داشته باشید که اگر مطابق با آموزش زیر عمل کنید افزونه موردنظر شما بهطور کلی از سایت شما و همچنین از هاست و دیتابیس حذف خواهد شد.
حذف فایلهای اضافی افزونه از روی هاست
افزونههای مختلف، دایرکتوریهای متفاوتی را بر روی سایت شما ایجاد میکنند. در اکثر مواقع، با پاک کردن آن افزونه، دایرکتوری ایجادشده به وسیله آن، بر روی سایت باقی میماند. به این دایرکتوریها، دایرکتوریهای بدون والد یا به زبان انگلیسی، “Orphand Directory” گفته میشود. بگذارید با یک مثال جالب بررسی کنیم که چه مقدار از فضای هاست ما میتواند بهوسیلهی این دایرکتوریها پر شود.
تمامی افزونههای کش کردن صفحات سایت، از جمله Cache LiteSpeed یا WP Super Cache، با ایجاد یک نسخه آماده از صفحات وبسایت، کمک میکنند که سرعت بارگذاری صفحات سایت شما بیشتر شود. اما مسلما این صفحات آماده در جایی باید ذخیره شوند!
این فضای ذخیرهسازی، هاست شماست. تمامی این صفحات در یک دایرکتوری ذخیره میشوند و ممکن است حتی حجمی فراتر از چندین گیگابایت پیدا کنند. حال فرض کنید که تصمیم به تغییر افزونه Cache سایت خود، از LiteSpeed به WP Rocket دارید. افزونه کش لایت اسپید را پاک کرده و افزونه راکت را جایگزین آن میکنید. باید توجه داشته باشید که با این کار، دایرکتوری مربوط به صفحات کش شده توسط افزونه LiteSpeed پاک نمیشود و شما باید این کار را به صورت دستی انجام دهید.
مثالهای شبیه به این بسیار زیاد هستند. از افزونههای بهینهسازی تصاویر، که نسخههای بهینهشده را در دایرکتوریهای مجزا ذخیره میکنند، تا افزونههای بکاپ مثل داپلیکتور و Updraftplus که نسخههای پشتیبان را در دایرکتوریهای مجزا ذخیره میکنند. اما راه حل چیست؟
در ادامه میتوانید ببینید که چطور این دایرکتوریها را میتوانید پیدا کنید و آنها را حذف نمایید.
ورود به پنل و حذف فایلهای اضافی
در اولین قدم باید وارد پنل دایرکت ادمین سایت خود شوید. پس از ورود به پنل، باید در میان گزینههای موجود، بر روی گزینه «مدیریت فایل» کلیک کنید.
با این کار صفحه جدیدی برای شما باز خواهد شد که در آن میتوانید کلیه محتوای هاست خود را مشاهده کنید. به مسیر زیر بروید.
public_html > wp-content > plugins
در این دایرکتوری میتوانید کلیه افزونههای خود را ببینید. شاید بد نباشد اگر اشاره کنم که با تغییر نام هر افزونه، میتوانید آن را غیرفعال (Deactive) کنید. همچنین با حذف هر دایرکتوری، پلاگین مربوط به آن حذف (Remove) میشود.
در این دایرکتوری بهدنبال هر نام مرتبط با افزونهای که تصمیم به پاک کردن آن دارید، بگردید. مثلا ما تصمیم گرفتهایم که خودمان تصاویر وبسایتمان را با فتوشاپ بهینه کنیم و دیگر نیازی به افزونه معروفِ Smush نداریم. پس از پاک کردن آن از طریق پیشخوان وردپرس، به دایرکتوری Plugins میرویم.
همانطور که قابل مشاهده است، دایرکتوری مرتبط با این افزونه دیده نمیشود. به یک دایرکتوری عقبتر (wp-content)، بازمیگردیم. همانطور که میبینید، افزونه Smush یک دایرکتوری با نام “smush-webp” ایجاد کرده، که پس از پاک شدن افزونه، همچنان فضای قابل توجهی از سایت ما را اشغال میکند.
با پاک کردن افزونه Smush، دیگر وجود این دایرکتوری و محتوای آن برای ما اهمیتی ندارد. آز آنجایی که با فعال نبودن افزونه، دیگر فایلهای مربوط به این دایرکتوری فراخوانی نمیشوند. از همین رو این دایرکتوری را پاک میکنیم.
برای پاک کردن هر دایرکتوری هم تنها کافیست که بر روی آن کلیک راست کرده و بر روی گزینه “Delete” کلیک کنید.
توجه داشتهباشید که قبل از انجام هرگونه تغییر در ساختار سایت خود (از جمله موارد گفته شده در این مقاله)، از سرویس میزبانی خود بکاپ تهیه کنید. پس از انجام هر مرحله از تغییرات، باید سایت خود را مورد بررسی قرار دهید و از عملکرد درست همه اجزای آن مطمئن شوید. اینگونه میتوانید با خیال راحت تغییرات خود را عملی کنید، بدون اینکه ترسی مبنی بر از دست دادن اطلاعات خود داشته باشید.
رویه کار برای همهی افزونههای دیگر هم به همین شکل است. با این کار میتوانید به راحتی فایلهای مرتبط با افزونههای پاک شده سایت خود را پیدا کرده و حذف کنید.
حذف اطلاعات افزونه از دیتابیس
با نصب هر افزونه بر روی سایتهای وردپرسی، با توجه به کاربرد افزونه و نحوه کدنویسی آن، چندین Table به دیتابیس سایت شما افزوده خواهد شد. بررسی این مسئله که Table چیست یا اینکه اطلاعات در دیتابیس چه کاری انجام میدهند، خارج از حوصلهی این نوشته است؛ با این وجود، میتوانید هر Table را یک ظرف در نظر بگیرید، که مقدار مشخصی از اطلاعات و دادهها را در خود نگه میدارد.
همانطور که در ابتدای این مطلب هم اشاره کردیم، Tableهای ایجاد شده توسط بیشتر از ۹۰ درصد افزونهها، پس از پاک شدن آنها در دیتابیس باقی میماند. نصب افزونههای متعدد و پاک کردن آنها موجب میشود که دیتابیس سایت شما با حجم عظیمی از دیتای بلااستفاده پر شود که به جز کندی سایت و افزایش فضای دیتابیس، هیچ حاصلی برای شما ندارند.
برای حذف این Tableها، کمی تجربه و بهرهمندی از زبان انگلیسی میتواند کار شما را بسیار سادهتر کند. Tableهای مربوط به هر افزونه، شامل الگویی از نام آن افزونه است. مثلا افزونههای EDD یا GravityForms، به ترتیب عبارات edd یا gf را در ابتدای Tableهای خود قرار میدهند. چنانچه بتوانید این الگوها را شناسایی کنید، بدون نیاز به نصب هیچ افزونه، میتوانید Tableهای بلااستفاده را از سایت خود با استفاده از ماژول phpmyadmin پاک کنید. اما اگر خودمان نتوانیم این Tableها را پیدا کنیم، باید چکار کرد؟
شناسایی Orphaned Tables با استفاده از افزونه
مثل همیشه افزونهای برای این کار توسعه یافته که میتواند کار را برای شما راحت کند. افزونه “Plugins Garbage Collector” در مخزن وردپرس موجود بوده و بهراحتی میتوانید نسبت به نصب آن اقدام نمایید.
پس از نصب افزونه، گزینهای تحت عنوان «پاکسازی پایگاه داده» به قسمت «ابزارها» در سایدبار پیشخوان وردپرس شما افزوده میشود که میتوانید از طریق آن نسبت به بررسی کلیه Tableهای سایت خود اقدام کنید. پس از کلیک بر روی گزینه پاکسازی پایگاه داده، صفحه جدیدی برای باز میشود که در آن صفحه تنها کافیست بر روی گزینه «اسکن دیتابیس» کلیک کنید.
با این کار افزونه “Plugins Garbage Collector”، اقدام به بررسی کلیه Tableهای موجود در دیتابیس شما کرده و وضعیت هر Table را در سه حالت به شما نشان میدهد.
active: پلاگین فعال است و این Table موردنیاز افزونه است. این Tableها باید در دیتابیس بدون هیچ تغییری باقی بمانند.
inactive: پلاگین همچنان بر روی سایت موجود است، اما در حال حاضر در وضعیت «غیرفعال» قرار گرفته است. در این شرایط میتوانید با استفاده از ستون «نام افزونه»، افزونه موردنیاز را شناسایی کرده و ببینید که چرا این افزونه بر روی سایت شما قرار دارد؟ اگر به آن نیاز دارید، یا میدانید که افزونه بهصورت دورهای مورد نیاز شماست (مثل افزونههای نوار اعلان)، پس نباید Tableهای مربوط به آن را پاک کنید. از طرفی اگر میبینید که به افزونه نیازی ندارید، میتوانید ابتدا آن را از طریق پیشخوان وردپرس حذف نموده و در گام بعدی، Tableهای مربوط به آن افزونه را هم از دیتابیس حذف کنید.
unused: تیبلهایی که با رنگ قرمز نشانهگذاری میشوند، در حقیقت همان Orphaned Tableهایی هستند که از ابتدای مقاله به آنها اشاره میکنیم. در حقیقت افزونههای سازنده این Tableها از روی سایت شما پاک شدهاند و این Tableها بدون هیچ کاربردی، تنها در حال اشغال کردن فضای دیتابیس شما هستند. لازم است اشاره کنم که بهمنظور پیشگیری از هرگونه خطایی، حتما با استفاده از ستون نام افزونه، مطمئن شوید که آن افزونه دیگر بر روی سایت شما موجود نیست؛ چراکه احتمال بروز خطا در افزونههای مرتبط با دیتابیس وجود دارد و در زمان کار با این افزونهها باید بسیار مراقب باشید.
همانطور که در ابتدای مقاله هم اشاره کردیم، فراموش نکنید که پیش از انجام هرگونه تغییری در دیتابیس خود، از وبسایت خودتان «فول بکاپ» تهیه نمایید.
حال که توانستیم تکلیف خودمان را با Tableهای بدون والد و افزونههای غیرضروری روشن کنیم، وقت آن رسیده که به سراغ نحوه پاک کردن این Tableها برویم.
پاک کردن Tableها از طریق افزونه
افزونه “Garbage plugins detector” علاوه بر شناسایی Tableهای بدون والد، امکان پاک کردن آنها را نیز در اختیار شما قرار میدهد. در کنار Tableهای بدون والد، یک چک باکس قرار گرفته که میتوانید با استفاده از آن، Tableهایی که تصمیم به پاک کردنشان دارید را انتخاب نمایید.
نهایتا پس از انتخاب Tableهای مدنظر خود، تنها کافیست که بر روی گزینه «حذف جداول انتخاب شده» در پایین صفحه کلیک کنید. همانطور که خودِ افزونه هم هشدار داده است؛ پاک کردن دیتابیسها برگشت پذیر نیست و تنها با داشتن یک بکاپ سالم از سایت خود، میتوانید دیتابیسهایتان را بازیابی کنید.
هرچند که این روش کاملا صحیح است و هیچ ایرادی هم ندارد؛ اما یک راهکار اصولیتر برای پاک کردن Tableها پیشنهاد میشود.
پاک کردن Tableها از طریق ماژول phpmyadmin
برای پاک کردن Tableها از این طریق، به سراغ ماژول phpmyadmin میرویم. برای این کار کافیست که از پنل دایرکت ادمین، بر روی گزینه “مدیریت MySQL” کلیک کنید.

با این کار وارد صفحه جدیدی خواهید شد که باید در این صفحه بر روی گزینه “phpmyadmin SSO” کلیک کنید.

با این کار وارد صفحه اصلی این ماژول خواهید شد. در این صفحه از طریق سایدبار سمت چپ میتوانید دیتابیسهای خود را ببینید. بر روی دیتابیس مربوط به وبسایت خودمان کلیک میکنیم. با این کار، تمامی Tableهای موجود در دیتابیس، برای ما لیست میشود. در این صفحه میتوانید نام، حجم و تعداد ردیف موجود در هر Table را مشاهده کنید.
توجه داشته باشید که همچنان، منبع دادههای ما همان اطلاعات دریافتی از طریق افزونه Plugins Garbage Collector میباشد. با در اختیار داشتن نام Orphaned Tables، میتوانیم این افزونهها را از دیتابیس خود پاک کنیم. در صفحهای که لیست تمامی Tableهای سایت در اختیارمان قرار گرفته، در کنار نام هر Table یک چک باکس دیده میشود که باید با توجه به اطلاعات دریافتی از افزونه Plugin Garbage Collector، اقدام به پر کردن چک باکس مربوط به هر تیبل نماییم.
به عنوان مثال، ما افزونه وردفنس را از سایت خود پاک کردهایم و اکنون تمامی تیبلهای ایجادشده توسط این افزونه، به Orphaned Table تبدیل شدهاند. با توجه به اطلاعات افزونه، اقدام به پر کردن چک باکسهای کنار Tableها مینماییم.
پس از انتخاب Tableهای مدنظرمان، مطابق با تصویر زیر، از منوی آبشاری موجود در پایین صفحه، گزینه “Drop” را انتخاب میکنیم.
با این کار، ماژول phpmyadmin با پیامی از شما میپرسد که از پاک کردن Tableهای انتخابی مطمئن هستید؟
در این پیام، نام تمامی Tableهای انتخاب شده قابل مشاهده است. نهایتا چنانچه از انتخابهای خود مطمئن هستید، بر روی گزینه “Yes” کلیک کنید. با این کار، پیامی با متن زیر به شما نمایش داده میشود که به معنای موفقیت آمیز بودن عملیات است.
Your SQL query has been executed successfully.
در این مرحله کار ما با دیتابیس تمام شده، اما همچنان یک گام دیگر پیش رو داریم.
مخفی سازی شورتکدهای مربوط به افزونه پاک شده
بسیاری از افزونهها بههمراه شورتکدهای مختلف ارائه میشوند، برخی هم صرفا به خاطر شورتکدهای کاربردیشان به سایت ما افزوده شدهاند!
با پاک کردن یک افزونه، شورتکدهای مربوط به آن که زمانی المانهای مختلفی را در سایت ما نشان میدادند، اکنون به یک متن خام تبدیل میشوند. فرض کنید که با استفاده از یک افزونه، فرم «تماس با ما» یا فرم ثبت نام در سایت خود ایجاد کردهاید و شورتکد مرتبط با آن را در صفحههای مختلف قرار دادهاید. تا زمانی که افزونه مرتبط با این فرمها در سایت شما فعال است، این شورتکدها به فرمهایی تبدیل میشوند که اصطلاحا عملکردی دارند و Functional هستند. اما با پاک کردن افزونه چه اتفاقی میافتد؟
با پاک کردن افزونه، دیگر این شورتکدها برای سایت شما معنایی ندارند. در حقیقت موتوری که قبلا این شورتکدها را میشناخت و آنها را به فرمهای بامعنی ترجمه میکرد، دیگر در سایت شما نیست. این مسئله موجب میشود که همان متن شورتکد در سایت شما به نمایش دربیاید. این مسئله علاوه بر اینکه ظاهر زیبایی ندارد، موجب میشود که عبارات بیمعنی در سایت شما دیده شود که به کاربران این موضوع را القا میکند که، این سایت از نقص فنی رنج میبرد!
چنانچه تنها در صفحات خاصی از این شورتکدها استفاده کردهاید، کار سختی ندارید. تنها کافیست که به این صفحات مراجعه کرده و شورتکد مربوطه را از سایت خود پاک کنید. بحث ما مربوط به زمانی است که از یک شورتکد به دفعات زیادی استفاده کردهاید و پاک کردن آن از تمامی این صفحات بسیار دشوار و تقریبا نشدنی است!
برای حل این موضوع، دو راه پیش رو دارید.
رفع مشکل شورتکدهای شکسته
به شورتکدهایی که در سایت شما به شکل متن خام نمایش داده میشوند، اصطلاحا شورتکد شکسته (Broken Shortcode) گفته میشود.
اولین راه برای حل این مشکل، سپردن کار به یک فرد متخصص است. کسی که با کوئریها (Query) آشنایی دارد و به پایگاه داده MySQL مسلط است. چنین فردی چنانچه از مهارت کافی برخوردار باشد، میتواند با چند خط کوئری، تا حد امکان این مشکل را از سایت شما حذف کند. اما مسلما این کار شامل هزینه، صرف وقت نسبتا زیاد و… است.
راه حلی که ما در این نوشته به آن میپردازیم، مسلما هزینهای ندارد و در سریعترین زمان، مشکل را برطرف میکند.
هر شورتکد، یک تگ اصلی دارد. برای درک بهتر، به مثال زیر نگاه کنید. این شورتکد متعلق به افزونه معروف Contact Form 7 میباشد.
[contact-form-7 id="1234" title="Contact form 1"]
به نظر شما تگ اصلی مربوط به این افزونه چیست؟ همانطور که حدس میزنید، اولین عبارت از هر شورتکد، تگ اصلی آن شورتکد است. در این مثال، تگ اصلی ما عبارت “contact-form-7” میباشد.
برای حذف این شورتکد شکسته از سایت خود، باید به سراغ فایل functions.php برویم. این فایل در داخل دایرکتوری پوسته یا قالب (theme) سایت شما قرار دارد. برای دسترسی به این فایل، پس از ورود به بخش «مدیریت فایل» از پنل دایرکت ادمین، میتوانید از مسیر زیر اقدام کنید.
public_html > wp-content > themes > SAMPLE
در مسیر بالا، “SAMPLE” به نام قالب سایت شما اشاره دارد.
نهایتا باید رشته کد زیر را به فایل functions.php قالب خود اضافه کنید.
add_shortcode( 'SHRTCODE-TAG', '__return_false' );
در رشته کد بالا، عبارت “SHORTCODE-TAG”، به تگ اصلی افزونه شما اشاره دارد. بنابراین برای حذف شورتکد شکسته افزونه Contact Form 7، که تگ اصلی آن را در ابتدای این بند پیدا کردیم؛ باید رشته کد زیر را به فایل functions.php قالب سایت خود اضافه کنیم.
add_shortcode( 'contact-form-7', '__return_false' );
در این مرحله کار ما با افزونه تمام شده و میتوانیم بگوییم که آثار پلاگین به کلی از سایت پاک شده است.
سخن پایانی
در این مقاله دیدیم که برخلاف باور عموم کاربران وردپرس، اتفاقات در این سیستم مدیریت محتوا، چیزی فراتر از آن است که در پیشخوان وردپس میبینید. نصب و حذف یک افزونه میتواند بار زیادی را به سایت شما اضافه کند، در حالی که شما هیچ اطلاعی از آن ندارید. استفاده از راهکارهای گفته شده در این نوشته میتواند سرعت سایت شما را به شکل محسوسی ارتقا دهد و بار سنگینی را از دوش دیتابیس شما بردارد.
نهایتا امیدواریم که از این نوشته بهره کافی را برده باشید. هدف ما در تیم نت افراز، پاسخگویی به سوالات و برطرف کردن مشکلات اولیه شماست. پس چنانچه سوالی در رابطه با این نوشته دارید، از طریق بخش ارسال نظرات در پایین این برگه با ما در ارتباط باشید.
موفقیت همراه راهتان باد.
بازدیدها: ۰
مرسی بابت این مطلب آموزشی