همانطور که می دانید وردپرس که محبوب ترین ابزار مدیریت محتوا در جهان است، از دیتابیس Mysql استفاده می کند. Mysql یک سیستم رایگان مدیریت ارتباطی دیتابیس است که برروی اکثر سرویس های میزبانی وب وجود دارد. همه ی اطلاعاتی که درون وردپرس وارد می نمایید، به غیر از فایل های وبسایت شما در داخل دیتابیس قرار می گیرند. به عبارت دیگره متن پست ها، کامنت ها، دسته بندی ها و همه ی تنظیماتی که در بخش مدیریت وردپرس انجام می دهید در داخل دیتابیس Mysql ذخیره می شوند. بنابراین آشنایی با کاربری دیتابیس می تواند در مدیریت وبسایت به شما کمک شایانی نماید. پیش از این در مقاله ی دیگری نحوه ی ساخت دیتابیس و مدیریت آن بوسیله ی نرم افزار phpMyAdmin در هاست ابری را در مقاله دیگری توضیح داده بودیم و در این مقاله سیزده کوئری بسیار کاربردی را معرفی خواهیم کرد که به کمک آنها می توانید وبسایت وردپرس خود را بهتر مدیریت نمایید.
برای مثال اگر نیاز به تغییر بعضی از اطلاعات در سایتی که با وردپرس آماده شده است، داشته باشید، اصلاح یک به یک هر رکورد، زمان بسیار زیادی خواهد برد و مستعد خطاهای انسانی می باشد. با اجرای ساده ی یک کوئری SQL بر روی دیتابیس وردپرس شما می توانید تغییرات را با سرعت و دقت انجام دهید.
گرفتن بک آپ از دیتابیس وردپرس
همیشه سعی نمایید از داده های خود قبل از هر تغییری بک آپ تهیه نمایید. این به شما اطمینان خاطر خواهد داد که اگر اتفاق ناگواری با تغییرات بوجود آید، شما می توانید سایت را به حالت اولیه باز گردانید. شما می توانید از پلاگین های WP-DB-Backup یا WP-DBManager استفاده نمایید که از طریق بخش ادمین وردپرس امکان تهیه بک آپ دیتابیس را فراهم می کنند. همچنین شما می توانید به کمک مراحل زیر، از طریق phpMyAdmin به صورت دستی از دیتابیس بک آپ تهیه نمایید.
ابتدا وارد phpMyAdmin شوید.
1. دیتابیس وردپرس را انتخاب کنید.
2. بر روی Export در قسمت بالای نوار ابزار کلیک نمایید.
3. جدولی را که می خواهید بک آپ بگیرید را مشخص نمایید و یا همه ی جداول را برای تهیه ی بک آپ از کل دیتابیس انتخاب نمایید.
4. SQL را برای دریافت فایل با پسوند .sql انتخاب نمایید.
5. گزینه ی “Save as file” را انتخاب نمایید.
6. در بخش فشرده سازی gzipped را برای دریافت فایل با حجم کمتر انتخاب نمایید.
7. درآخر بروی GO کلیک نمایید و یک پنجره ی دانلود ظاهر می شود که از شما خواهد خواست، فایل را ذخیره نمایید.
توجه: در صورتی که حجم دیتابیس شما بزرگ باشد، استفاده از phpMyAdmin برای تهیه ی نسخه ی پشتیبان توصیه نمی گردد.
13 کوئری SQL برای وردپرس
یک راه ساده برای اجرای هر کدام از کوئری های زیر استفاده از phpMyAdmin می باشد. این ابزار یکی از معمولی ترین ابزارهای مراجعه و ایجاد تغییرات در دیتابیس می باشد. تقریبا تمام کنترل پنل های موجود این ابزار را دارا می باشند. البته شما می توانید از پلاگین WordPress SQL Executioner نیز برای اجرای کوئری های وردپرس استفاده نمایید. برای وارد کردن کوئری های مورد نظر لطفا با استفاده از phpMyAdmin مراحل زیر را دنبال نمایید.
1. وارد phpMyAdmin شده و دیتابیس وردپرس را انتخاب نمایید.
2. بر روی زبانه ی SQL کلیک نمایید که شما را به یک صفحه با کادری برای کوئری SQL میبرد.
توجه : همه ی کوئری ها، کوئری مستقیم SQL هستند و پیشوند استاندارد ‘wp_’ را برای جداول فرض خواهند کرد. اگر از پیشوند متفاوتی استفاده می کنید، کوئری ها را به همان شکل تغییر دهید.
1. تغییر آدرس سایت ( SITEURL و HOMEURL )
وردپرس مسیر نهایی آدرس سایت و خانه را در دیتابیس ذخیره می کند. بنابراین اگر وردپرس را از روی رایانه ی خود ( local host ) به سرور منتقل نموده اید و یا آدرس وبسایت را تغییر داده اید ، سایت شما بارگزاری نخواهد شد. دلیل این امر مسیر نهایی آدرس سایت است که هنوز به localhost یا آدرس قبلی وبسایت اشاره می کند. برای راه اندازی مجدد سایت، شما می بایست آدرس سایت و خانه را اصلاح نمایید.
راه حل:
UPDATE wp_options SET option_value = replace (option_value, ‘http://www.oldsiteurl.com’, ‘http://www.newsiteurl.com’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;
2. تغییر GUID
بعد از انتقال سایت از localhost به سرورتان، یا از یک دامنه به دامنه ی دیگر، شما می بایست آدرس ها را برای GUID field در جدول wp_posts اصلاح نمایید. این موضوع حیاتی است، زیرا GUID برای ترجمه ی پست ها و کد شماره ی صفحه به مسیر نهایی مطلب درست، در صورتی که به اشتباه وارد شده باشند، لازم است.
راه حل:
UPDATE wp_posts SET guid = REPLACE (guid, ‘http://www.oldsiteurl.com’, ‘http://www.newsiteurl.com’);
3. تغییر آدرس در محتوا
وردپرس از لینک کامل سایت همراه با دامنه برای ذخیره در دیتابیس استفاده می کند. داخل محتوای هر رکورد یک پست، همه ی آدرس های قدیمی را که به محتوای قدیمی اشاره می کنند را ذخیره می کند. بنابراین شما نیاز به تغییر همه ی این آدرس ها به نام دامنه ی جدید خواهید داشت.
راه حل:
UPDATE wp_posts SET post_content = REPLACE (post_content, ‘http://www.oldsiteurl.com’, ‘http://www.newsiteurl.com’);
4. فقط تغییر آدرس تصاویر
اگر تصمیم دارید که تصاویر را بر روی سرور دیگری ذخیره کنید، تا ترافیک بارگزاری تصاویر از روی سرور شما نباشد، می توانید از کوئری زیر برای تغییر مسیر همه ی تصاویر در وردپرس به بارگزاری از روی سرور دیگری استفاده نمایید. لازم به توضیح است که آدرس “http://yourcdn.newsiteurl.com” برابر با آدرس سرور جدید محل میزبانی تصاویر شما می باشد.
راه حل:
UPDATE wp_posts SET post_content = REPLACE (post_content, ‘src=”http://www.oldsiteurl.com”‘, ‘src=”http://yourcdn.newsiteurl.com”‘);
شما همچنین نیاز خواهید داشت که با استفاده از کوئری زیر GUID را برای تصاویر الصاق شده، اصلاح نمایید.
UPDATE wp_posts SET guid = REPLACE (guid, ‘http://www.oldsiteurl.com’, ‘http://yourcdn.newsiteurl.com’) WHERE post_type = ‘attachment’;
5. به روز کردن META پست ها
به روز کردن META یک پست تقریبا مشابه آپدیت کردن آدرس در محتوای یک پست است. اگر آدرس های اضافی برای یک پست ذخیره نموده اید، شما می توانید از کوئری زیر برای اصلاح آنها استفاده نمایید.
راه حل:
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, ‘http://www.oldsiteurl.com’,’http://www.newsiteurl.com’);
6. تغییر نام کاربری “admin” پیش فرض
با نصب وردپرس به صورت پیش فرض یک اکانت با نام کاربری Admin ساخته می شود. این یک مورد کلی است که هر کسی که از وردپرس استفاده می کند، آن را می داند. اما همین مسئله می تواند یک مشکل امنیتی بزرگ باشد، زیرا که هکر می تواند با استفاده از BruteForce رمز عبور ادمین وردپرس را بیابد. اگر شما بتوانید نام کاربری پیش فرض ادمین را تغییر دهید، شما امنیت پنل ادمین وردپرس خود را به میزان قابل توجهی افزایش داده اید.
راه حل:
UPDATE wp_users SET user_login = ‘Your New Username’ WHERE user_login = ‘Admin’;
7. تغییر رمز عبور
آیا هیچ وقت خواسته اید که رمز عبور خود را داخل وردپرس تغییر دهید، اما به نظر رسیده که ریست پسورد به دلیل نا مشخصی کار نمی کند؟
راه حل:
UPDATE wp_users SET user_pass = MD5( ‘new_password’ ) WHERE user_login = ‘your-username’;
8. اختصاص دادن همه ی مقاله های نویسنده ی B به نویسنده ی A
اگر شما می خواهید که تمام مقالات نویسنده ی B را به نام نویسنده ی A تنظیم نمایید، این امر بسیار زمانبر خواهد بود. به کمک کوئری SQL زیر شما به آسانی می توانید تمام رکوردها را بررسی کرده و تغییرات را ایجاد نمایید.
شما ابتدا نیاز به داشتن شناسه ی نویسنده ها با رفتن به صفحه ی “نویسنده و کاربر” در پنل ادمین وردپرس خواهید داشت. بر روی نام نویسنده کلیک نمایید تا پروفایل آنها را مشاهده نمایید. در نوار آدرس مرورگر، به دنبال “user_id” بگردید. این همان شناسه ی نویسنده است که ما لازم داریم.
راه حل:
UPDATE wp_posts SET post_author = ‘new-author-id’ WHERE post_author = ‘old-author-id’;
9. پاک کردن پشتیبان پست ها ( Revision )
رویژن ها نسخه های پشتیبانی هستند که وردپرس به هنگام ویرایش، برای هر پست نگهداری می کند تا امکان بازگشت تغییرات یک پست تا 25 مرحله برای شما فراهم باشد. این امکان بسیار مفیدی است اما موجب می شود که دیتابیس شما کمی سنگین شود. برای حذف رویژن ها می توانید از کوئری زیر استفاده نمایید.
راه حل:
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = ‘revision’ ;
توجه: در نظر داشته باشید که همه ی Revision ها شامل هر پست و اطلاعات متا ، آن حذف خواهد شد. به همین دلیل بهتر است قبل از انجام این کار حتما از دیتابیس بک آپ تهیه نمایید.
10. لیست تمام ایمیل های کامنت ها، بدون تکرار
اگر می خواهید ایمیل تمام کاربرانی که تا به حال در وبلاگ شما کامنت گذاشته اند را در یک لیست جمع آوری کنید، می توانید از کوئری زیر استفاده نمایید.
راه حل:
SELECT DISTINCT comment_author_email FROM wp_comments;
11. حذف کردن یک pingback
در وردپرس مقالات محبوب معمولا تعداد زیادی پینگ بک دریافت می کنند. این امر حجم دیتابیس شما را افزایش خواهد داد و ممکن است تمایل به حذف آنها داشته باشید که کوئری زیر به شما در انجام این امر کمک خواهد کرد.
راه حل:
DELETE FROM wp_comments WHERE comment_type = ‘pingback’;
12. پاک کردن همه ی کامنت های اسپم
در صورتی که تعداد زیادی کامنت اسپم دریافت می کنید، رفتن به هر صفحه و پاک کردن اسپم ها می تواند خسته کننده و ملالت آور باشد. با کمک کوئری زیر می تونید، حتی اگر می خواهید 500 کامنت اسپم را حذف کنید، این امر را به سرعت انجام دهید.
راه حل:
DELETE FROM wp_comments WHERE comment_approved = ‘spam’;
0= کامنتی که در انتظار تایید است
1= کامنت تایید شده
Spam= کامنت هایی که به عنوان اسپم شناخته شده اند.
13. شناسایی Tag های استفاده نشده
اگر در وردپرس، پست های قدیمی را به صورت دستی از Mysql حذف نمایید، تگ های قدیمی همچنان باقی خواهند ماند و در لیست تگ ها قابل مشاهده خواهند بود. کوئری زیر تگ های استفاده نشده را برای شما مشخص خواهد کرد.
راه حل:
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy=’post_tag’ AND wtt.count=0;