+۱۵ کوئری مفید و کاربردی SQL برای وردپرس

وردپرس رابطه محکم و عجین شده ای با دیتابیس MySQL دارد و کلیه اطلاعات خود اعم از نوشته ها، صفحات، کامنت های کاربران و … را در آن ثبت و ضبط می کند، بخش مدیریت وردپرس و افزونه های نصب شده نیز به عنوان یک لایه میانی درخواست های خود را در قالب کوئری های CRUD به MySQL ارسال می کنند.

اما گاهی اوقات لازم است که خارج از چهارچوب ها عمل کرده و خودتان مستقیما با دیتابیس وردپرس تعامل داشته باشید و حتی بدون نصب افزونه کوئری های مدنظرتان را اجرا کنید، ما در این پست آموزشی می خواهیم تعدادی از این کوئری ها را بررسی کنیم که علاوه بر بهینه سازی و افزایش سرعت وردپرس در مواقع بحرانی نیز به دردتان می خورند.

قبل از اجرای هر کوئری بکاپ گیری را فراموش نکنید، کافی است شرط where را فراموش کرده و کلیه اطلاعات تان حذف و یا تغییر کنند.

روش های مختلفی برای اجرای کوئری بر روی دیتابیس وردپرس وجود دارد، بهترین و ساده ترین راه استفاده از phpMyAdmin در cPanel است، برای انجام اینکار پس از لاگین به سی پنل از بخش DataBases گزینه phpMyAdmin را انتخاب کنید.

بخش databases در سی پنل

سپس دیتابیس وردپرس تان را انتخاب کرده و بر روی تب SQL کلیک نمائید.

تب sql در phpmyadmin

حالا می توانید هر کدام از کوئری های زیر را اجرا نمائید، ما در این آموزش فرض کردیم پیشوند پیش فرض جداول وردپرس همان “_wp” َ است.

۱- حذف نظرات اسپم(Spam Comments)

یکی از مشکلاتی که مدیران وب سایت ها با آن دست و پنجه نرم می کنند نظرات یا دیدگاه های جفنگ است، ممکن است تعداد زیادی کامنت اسپم در بخش دیدگاههای وردپرس داشته باشید و می خواهید به یکباره از شر همه آنها راحت شوید، کوئری زیر اینکار را برای شما انجام می دهد.

DELETE FROM wp_comments WHERE comment_approved = 'spam';

 

فیلد comment_approve جدول wp_comments مقادیر زیر را نگهداری می کند:

  • ۰ : دیدگاه در انتظار تایید است.
  • ۱ : دیدگاه توسط مدیر تایید و ممیزی شده است.
  • spam: دیدگاه به عنوان اسپم شناسایی شده است.

به عنوان مثال کوئری زیر کلیه دیدگاه های در انتظار تایید را حذف می کند.

DELETE from wp_comments WHERE comment_approved = '0';

۲- بستن دیدگاه(Close Comments)

اگر می خواهید امکان ثبت دیدگاه را برای کلیه نوشته ها غیر فعال کنید از کوئری زیر استفاده نمائید.

UPDATE wp_posts SET comment_status = 'closed' WHERE post_type = 'post';
UPDATE wp_posts SET ping_status = 'closed' WHERE post_type = 'post';

۳- تغییر نام کاربری admin

اکثر افراد در فرآیند نصب وردپرس نام کاربری admin را برای ورود به بخش مدیریت در نظر می گیرند، کاری که از پایه بست ویران است و می تواند امنیت یک وب سایت را به خطر بیندازد، هکرها معمولا از نام کاربری ادمین برای تست نفوذ استفاده می کنند، اگر شما هم از admin استفاده کرده اید همین حالا با اجرای اسکریپت زیر آن را تغییر دهید.

UPDATE wp_users SET user_login = 'نام کاربری جدید' WHERE LOWER(user_login) = 'admin'

 

۴- تغییر کلمه عبور(Reset Password)

اگر بنا به هر دلیلی پسورد ورود به بخش مدیریت وردپرس را فراموش کردید و در پشت درب های بسته گرفتار شدید، کد زیر بهترین راه حل برای خروج از این بن بست خواهد بود.

UPDATE wp_users SET user_pass = MD5( 'کلمه عبور جدید' ) WHERE user_login = 'نام کاربری شما';

 

علاوه بر اسکریپت بالا در مطلب چگونه از طریق MySQL ادمین وردپرس ایجاد کنیم؟ چگونگی ورود به بخش مدیریت وردپرس را با ایجاد یک کاربر جدید آموزش دادیم.

۵- انتقال اطلاعات از کاربر A به B

اگر می خواهید محتوای تولید شده توسط کاربر A را به کاربر B منتقل نمائید کد زیر سرعت اینکار را افزایش می دهد، در کوئری فوق ابتدا آی دی یا شناسه کاربر A و B را با استفاده از نام کاربری آنها بدست آورده و سپس عملیات آپدیت را انجام می دهیم، این کدها باید با هم اجرا شوند.

SELECT @user_id_a := ID FROM wp_users WHERE user_login = 'A نام کاربری';
SELECT @user_id_b := ID FROM wp_users WHERE user_login = 'B نام کاربری';

UPDATE wp_posts SET post_author = @user_id_b WHERE post_author = @user_id_a;

 

۶- حذف Pingbacks و Trackbacks

پینگ بک و ترک بک از جمله قابلیت هایی هستند که موجب افزایش حجم دیتابیس می شوند، اما به کمک کوئری زیر می توانید آنها را حذف کنید. اگر به امکانات فوق احتیاج ندارید گزینه های “” و “” را از بخش “گفتگو” در تنظیمات وردپرس غیرفعال کنید.

DELETE FROM wp_comments WHERE comment_type = 'pingback';
DELETE FROM wp_comments WHERE comment_type = 'trackback';

 

۷- حذف رونوشت(Delete Revision)

هنگامی که یک نوشته را ویرایش می کنید وردپرس نسخه های متفاوتی از آن را تحت عنوان رونوشت نگهداری می کند تا در صورت لزوم(قطع برق یا کرش مرورگر) بتوانید اطلاعات موردنیازتان را بازیابی کنید، اما این قابلیت موجب ذخیره رکوردهای زیادی خواهد شد که به مرور زمان حجم دیتابیس وردپرس را افزایش می دهد.

اگر تمایلی به غیرفعال کردن ثبت رونوشت ندارید می توانید به کمک کوئری زیر رکوردهای رونوشت را به صورت دوره ای حذف نمائید.

DELETE wp,wtr,wpm FROM wp_posts wp
LEFT JOIN wp_term_relationships wtr ON wtr.object_id = wp.ID 
LEFT JOIN wp_postmeta wpm ON wpm.post_id = wp.ID
WHERE wp.post_type = 'revision'

 

برای آشنایی بیشتر با قابلیت رونوشت مطلب آموزشی مدیریت رونوشت ها (Post Revisions) در وردپرس را مطالعه فرمائید.

۸- بدست آوردن لیست Meta Key ها

همانطور که می دانید متادیتاها از دو بخش نام کلید(Key) و مقدار کلید(Value) تشکیل شده اند، برای مشاهده لیست کامل کلیدهایی که در جدول wp_postmeta ذخیره شده است به صورت زیر عمل کنید.

SELECT DISTINCT meta_key FROM wp_postmeta;

 

۹- حذف اطلاعات متا(Delete Post Meta)

نصب و حذف افزونه از جمله وظایف روتین یک مدیر وردپرسی است، برخی از این پلاگین ها اطلاعات موردنیاز خود را در جدول wp_postmeta ذخیره می کنند اما پس از حذف افزونه اطلاعات فوق همچنان در جدول postmeta وجود دارد و در فرآیند حذف پلاگین تدبیری برای پاک کردن آنها در نظر گرفته نشده است، به کمک کوئری زیر می توانید مستقیما این اطلاعات را حذف نمائید.

DELETE FROM wp_postmeta WHERE meta_key = 'نام کلید';

 

از اسکریپت زیر نیز برای حذف کلیه متاهایی که به هیچ پست تایپی(Post Type) مرتبط نیستند استفاده می شود، در واقع پست تایپ هایی که از جدول wp_posts حذف شده اند اما ID آنها همچنان در جدول wp_postmeta وجود دارد.

DELETE wpm
FROM wp_postmeta wpm
LEFT JOIN wp_posts wp ON wp.ID = wpm.post_id
WHERE wp.ID IS NULL

 

پیشنهاد می کنیم مطلب آموزشی چگونه از زمینه های دلخواه یا Custom Fields استفاده کنیم؟ را مطالعه فرمائید.

۱۰- خالی کردن زباله دان(Empty Trash Bin)

برای حذف کلیه پست تایپ هایی که در زباله دان وجود دارد از کوئری زیر استفاده کنید.

DELETE FROM wp_posts WHERE post_status = 'trash';

 

۱۱- ایجاد لیست ایمیل

به مرور زمان دیدگاه های مختلفی از بازدیدکنندگان وب سایت تان دریافت خواهید کرد که این نظرات شامل آدرس ایمیل فرد نیز می باشد، به کمک کوئری زیر می توانید یک لیست ایمیل ایجاد کرده و به سرویس ایمیل(میلرلایت، میل چیمپ و …) موردنظرتان وارد(Import) نمائید.

SELECT DISTINCT comment_author_email FROM wp_comments WHERE comment_approved = 1;

 

۱۲- برچسب های(Tags) بلااستفاده

ممکن است تگ هایی ایجاد کرده باشید که در هیچ نوشته ای از آنها استفاده نشده است، با استفاده از کوئری زیر می توانید این موارد را شناسایی کرده و در صورت لزوم حذف نمائید.

// Check first
SELECT * From wp_terms wt
 JOIN wp_term_taxonomy wtt ON wt.term_id = wtt.term_id 
 WHERE wtt.taxonomy = 'post_tag' AND wtt.count = 0;

// Then delete it
DELETE FROM wp_terms WHERE 
        term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE 
        term_id NOT IN ( SELECT term_id FROM wp_terms );
DELETE FROM wp_term_relationships WHERE 
        term_taxonomy_id NOT IN ( SELECT term_taxonomy_id FROM wp_term_taxonomy );

 

۱۳- تغییر آدرس سایت

وردپرس آدرس مطلق(Absolute) وب سایت تان را در جدول wp_options ذخیره می کند، بنابراین اگر سایت تان را از سرور محلی(Local Host) به سرور آنلاین(Live) منتقل نمائید اولین کاری که باید انجام دهید تغییر این آدرس ها است، برای انجام اینکار از کوئری زیر استفاده کنید.

UPDATE wp_options SET option_value = 
replace(option_value, 'http://www.oldurl.com', 'http://www.newurl.com') 
WHERE option_name = 'home' OR option_name = 'siteurl';

و همچنین فیلد guid جدول wp_posts را به آدرس جدید تغییر دهید.

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldurl.com', 'http://www.newurl.com');

 

۱۴- جایگزینی محتوا

اگر می خواهید رشته مشخصی را در کلیه پست تایپ ها به یکباره تغییر دهید تابع replace انتخاب معقول و منطقی خواهد بود، فرض کنید در تعدادی نوشته از یک آدرس مشخص استفاده کرده اید و حالا باید آن را تغییر دهید، اسکرپیپ زیر اینکار را به بهترین شکل انجام می دهد.

UPDATE wp_posts SET post_content = 
            REPLACE (post_content, 'http://www.oldurl.com', 'http://www.newurl.com');

 

۱۵- غیرفعال کردن کلیه افزونه ها

بعضی مواقع افزونه های نصب شده خود عامل بروز خطا هستند، در این شرایط ممکن است نتوانید به بخش مدیریت وردپرس لاگین کنید یا حتی با صفحه سفید مرگ مواجه شوید، در این وضعیت بهتر است کلیه افزونه ها را غیر فعال کرده و پس از ورود به دنبال پیدا کردن مشکل باشید.

UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';

جمع بندی

تعدادی از کوئری هایی که در بالا بررسی کردیم توسط افزونه های بهینه سازی مثل WP-Optimize استفاده می شوند، در نتیجه شما می توانید بدون نصب افزونه اضافی این قبیل کارها را با کمی احتیاط به راحتی انجام دهید و دیگر نیازی نیست برای هر کار کوچکی افزونه نصب کنید.

نظرات و سوالات کاربران

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *