SHET23

حذف خودکار زباله دان وردپرس بدون نصب افزونه

حذف خودکار زباله دان وردپرس بدون نصب افزونه

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

پس چیزی که واقعاً می‌تونین تنظیم کنین، بازه زمانی این حذفه — نه فعال کردن خودِ قابلیت. تو این مقاله می‌بینیم زباله‌دان دقیقاً چطور کار می‌کنه، چطور بازه رو با یه خط کد عوض کنیم، چه اشتباهی ممکنه محتوای سایتتون رو نابود کنه، و مهم‌تر از همه: چیزهایی که واقعاً دیتابیس شما رو سنگین کردن و زباله‌دان جزوشون نیست.

قبل از هر چیز؛ وردپرس از قبل این کار را می‌کند

از نسخه ۲.۹ وردپرس به بعد، قابلیت زباله‌دان به همراه یه سیستم پاکسازی خودکار اومده. مقدار پیش‌فرضش ۳۰ روز هست. یعنی هر پست، برگه، محصول، پیوست یا دیدگاهی که به زباله‌دان می‌فرستین، بعد از سی روز خودبه‌خود برای همیشه پاک می‌شه. بدون هیچ افزونه‌ای، بدون هیچ کدی.

پس اگه کسی بهتون گفته باید کدی اضافه کنین تا «حذف خودکار فعال بشه»، اطلاعاتش دقیق نیست. کاری که اون کد می‌کنه، فقط تغییر عدد ۳۰ به عدد دلخواه شماست.

زباله‌دان دقیقاً چطور کار می‌کند؟

فهمیدن این بخش کمکتون می‌کنه تصمیم بهتری بگیرین:

  • وقتی روی «انتقال به زباله‌دان» می‌زنین، پست حذف نمی‌شه. فقط وضعیتش در دیتابیس از publish به trash تغییر می‌کنه و یه رکورد کوچیک با زمان انتقال براش ثبت می‌شه.
  • یه وظیفه زمان‌بندی‌شده به اسم wp_scheduled_delete روزانه اجرا می‌شه و هر آیتمی که مدت ماندگاریش تموم شده رو برای همیشه پاک می‌کنه.
  • این تنظیم فقط مخصوص پست نیست؛ برگه‌ها، محصولات ووکامرس، دیدگاه‌ها و پیوست‌های رسانه رو هم شامل می‌شه.
زباله‌دان وردپرس
زباله‌دان وردپرس

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

آیا زباله‌دان واقعاً سایت را کند می‌کند؟

اینجا باید صادق باشم، چون تقریباً همه مقالات فارسی این موضوع رو بزرگ‌نمایی می‌کنن. اما جواب اینه؛ برای اکثر سایت‌ها، تقریباً نه.

دلیلش اینه که پست‌های داخل زباله‌دان از کوئری‌های عادی سایت فیلتر می‌شن. وقتی بازدیدکننده صفحه اصلی شما رو باز می‌کنه، وردپرس اصلاً سراغ رکوردهایی که وضعیتشون trash ـه نمی‌ره. صد یا دویست پست حذف‌شده، اثر محسوسی روی سرعت سایت شما نداره.

پس این تنظیم برای چه کسانی واقعاً مهمه؟

  • سایت‌های خبری و پرمحتوا که هفته‌ای ده‌ها پیش‌نویس حذف می‌کنن.
  • فروشگاه‌های بزرگی که مدام محصول اضافه و حذف می‌کنن.
  • سایت‌هایی که با محدودیت فضای دیتابیس روبه‌رو شدن.
  • سایت‌هایی با حجم زیاد فایل رسانه‌ای حذف‌شده که فضای هاست رو اشغال کردن

حالا اگه با دغدغه سرعت وارد این مقاله شدین، سوال بعدیتون احتمالاً اینه که پس بالاخره چی سایت رو کند کرده؟ جواب معمولاً در جای دیگه‌ایه! نبود کش صفحه، تصاویر سنگین و بهینه‌نشده، و فایل‌های CSS و جاوااسکریپتی که رندر صفحه رو بلاک می‌کنن. اینا برخلاف زباله‌دان، اثرشون روی هر بازدید و برای هر کاربر تکرار می‌شه. اگه دنبال یه راه‌حل یکجا برای این موارد هستین، افزونه رخش که خودمون در میهن‌وردپرس توسعه دادیم دقیقاً روی همین سه محور کار می‌کنه: کش کامل صفحه، تبدیل خودکار تصاویر به WebP و AVIF، و کوچک‌سازی و بارگذاری تأخیری CSS و جاوااسکریپت.

پس اگه دغدغه اصلیتون واقعاً سرعت سایته، زباله‌دان جای درستی برای شروع نیست. اون چیزی که واقعاً عدد رو جابه‌جا می‌کنه، کش صفحه، بهینه‌سازی تصاویر و مدیریت فایل‌های CSS و جاوااسکریپته. این‌ها بحث جداگانه‌ای دارن و اینجا واردشون نمی‌شم، ولی حواستون باشه که با تنظیم زباله‌دان، سایت کندتون سریع نمی‌شه.

تغییر بازه حذف خودکار

قدم صفر؛ نسخه پشتیبان بگیرید

ما داریم فایل wp-config.php رو ویرایش می‌کنیم؛ حساس‌ترین فایل کل نصب وردپرس شما. یه کاراکتر اشتباه توی این فایل، سایتتون رو با صفحه سفید از کار می‌ندازه.

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

کد و محل دقیق قرارگیری

وارد فایل منیجر هاست (یا از طریق FTP) بشین، به پوشه اصلی وردپرس برین و فایل wp-config.php رو باز کنین.

فایل wp-config.php
فایل wp-config.php

حالا این خط رو اضافه کنین:

define( 'EMPTY_TRASH_DAYS', 7 );

محل قرارگیری خیلی مهمه. این خط باید قبل از این خط باشه:

/* That's all, stop editing! Happy publishing. */

اگه بعد از این خط بذارینش، اصلاً اعمال نمی‌شه. این رایج‌ترین دلیلیه که آدم‌ها فکر می‌کنن کد کار نکرده.

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

چه عددی برای شما مناسب است؟

عددیعنی چهمناسب چه کسی
۱حذف بعد از یک روزسایت پرحجم با نویسنده تک‌نفره
۷حذف بعد از یک هفتهگزینه متعادل و پیشنهاد ما برای بیشتر سایت‌ها
۳۰پیش‌فرض وردپرساگر کد نگذارید، همین اعمال می‌شود
۹۰نگهداری طولانیسایت چندنویسنده‌ای که اشتباه در آن رایج است
۰غیرفعال کردن کامل زباله‌دانهشدار بخش بعد را حتماً بخوانید

توصیه من عدد ۷ ـه. یه هفته برای اینکه بفهمین اشتباهی چیزی رو حذف کردین کافیه، و در عین حال دیتابیس رو تمیز نگه می‌داره.

هشدار جدی درباره عدد صفر

این مهم‌ترین جمله کل مقاله‌ست، پس با دقت بخونینش:

گذاشتن عدد صفر یعنی «هر روز خالی کن» نیست. یعنی زباله‌دان را کاملاً غیرفعال کن.

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

اگه سایت شما بیش از یه نویسنده داره، این تنظیم رو اصلاً انجام ندین. تصورش رو بکنین که یه همکار اشتباهی یه مقاله دوهزار کلمه‌ای رو حذف کنه.

کد را گذاشتم ولی کار نمی‌کند؛ چرا؟

سه تا دلیل رایج داره:

  1. کد را بعد از خط «stop editing» گذاشتین. اولین چیزی که باید چک کنین.
  2. عدد را فارسی تایپ کردین. باید ۷ لاتین باشه، نه ۷ فارسی. این خطا سایت رو هم از کار می‌ندازه.
  3. وردپرس-کرون اجرا نشده. این مهم‌ترین و کمتر شناخته‌شده‌ترین دلیله.

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

راه‌حلش هم ساده‌ست: اگه دقت زمان‌بندی براتون مهمه، از پنل هاست یه کرون‌جاب واقعی تعریف کنین که فایل wp-cron.php رو در بازه‌های منظم صدا بزنه و کرون داخلی وردپرس رو غیرفعال کنین. برای سایت‌های معمولی، این کار لازم نیست.

پاکسازی واقعی دیتابیس؛ چیزهایی که بیشتر اهمیت دارند

حالا می‌رسیم به بخشی که اگه دغدغه‌تون واقعاً سنگینی دیتابیسه، ارزشش از کل بحث زباله‌دان بیشتره. سه تا مقصر اصلی وجود داره:

بازنگری پست‌ها (Revisions)

این معمولاً بزرگ‌ترین متهمه. وردپرس هر بار که پستی رو ذخیره می‌کنین، یه نسخه کامل از محتواش نگه می‌داره. یه مقاله سه هزار کلمه‌ای که سی بار ویرایش شده، سی رکورد کامل در دیتابیس ساخته. برای محدود کردنش، این خط رو هم به همون فایل اضافه کنین:

define( 'WP_POST_REVISIONS', 5 );

این یعنی فقط پنج نسخه آخر نگه داشته بشه. عدد ۵ برای اکثر سایت‌ها منطقیه. اگه بخواین کلاً غیرفعالش کنین می‌تونین false بذارین، ولی توصیه نمی‌کنم؛ بازنگری‌ها بارها آدم‌ها رو نجات دادن.

ترنزینت‌های منقضی‌شده

ترنزینت‌ها داده‌های موقتی‌ان که افزونه‌ها در جدول تنظیمات ذخیره می‌کنن. مشکل اینه که خیلی از افزونه‌ها بعد از منقضی شدن، ترنزینت‌هاشون رو پاک نمی‌کنن. توی سایت‌های قدیمی، این می‌تونه ده‌ها هزار رکورد بی‌مصرف باشه.

دیدگاه‌های اسپم

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

برای هر سه مورد، یه افزونه بهینه‌سازی دیتابیس معتبر کار رو در چند کلیک انجام می‌ده. فقط حتماً قبلش از دیتابیس نسخه پشتیبان بگیرین — این ابزارها عملیات برگشت‌ناپذیر انجام می‌دن.

روش‌های جایگزین

اگه با ویرایش فایل راحت نیستین، دو تا گزینه دیگه دارین:

  • افزونه‌های مدیریت زباله‌دان. افزونه‌هایی هستن که همین تنظیم رو با یه رابط گرافیکی در اختیارتون می‌ذارن. مزیتش سادگیه، عیبش یه افزونه اضافه روی سایت برای کاری که با یه خط کد انجام می‌شه.
  • خط فرمان (WP-CLI). اگه به هاستتون دسترسی SSH دارین، می‌تونین مستقیم تعداد آیتم‌های زباله‌دان رو ببینین و پاکشون کنین. برای مدیران سایت‌های بزرگ، این سریع‌ترین روشه.

پرسش‌های پرتکرار

اگر هیچ کدی اضافه نکنم چه اتفاقی می‌افتد؟

هیچ مشکلی پیش نمیاد. وردپرس به‌صورت پیش‌فرض هر آیتمی رو که بیش از ۳۰ روز در زباله‌دان مونده، خودکار پاک می‌کنه.

این تنظیم شامل محصولات ووکامرس هم می‌شود؟

بله. این ثابت روی همه انواع محتوا اعمال می‌شه: پست، برگه، محصول، پیوست و دیدگاه.

آیا خالی کردن زباله‌دان روی سئوی سایت اثر دارد؟

نه. صفحات داخل زباله‌دان برای گوگل قابل دسترسی نیستن و ایندکس نمی‌شن. اگه صفحه‌ای قبلاً ایندکس شده بوده و حذفش کردین، مسئله شما ریدایرکت و کد وضعیت ۴۰۴ ـه، نه زباله‌دان.

می‌شود زباله‌دان را یک بار دستی خالی کرد؟

بله. کافیه در فهرست نوشته‌ها یا محصولات، روی تب «زباله‌دان» بزنین و گزینه «خالی کردن زباله‌دان» رو انتخاب کنین. برای یه بار پاکسازی، نیازی به هیچ کدی نیست.

پستی را اشتباهی برای همیشه حذف کردم. راهی هست؟

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

جمع‌بندی

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

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

و در نهایت، اگه انگیزه اصلی شما از خوندن این مقاله سبک کردن دیتابیس بوده، انصافاً باید بگم زباله‌دان به‌ندرت متهم اصلیه. بازنگری‌های پست، ترنزینت‌های فراموش‌شده و دیدگاه‌های اسپم معمولاً چند برابر زباله‌دان حجم اشغال کردن و رسیدگی به اونها بازدهی بیشتری داره. کاری که هم امروز و هم در آینده به دردتون می‌خوره هم یه عادت ساده‌ست: قبل از دست زدن به wp-config.php، یه نسخه پشتیبان بگیرین. این عادت دیر یا زود یه بار نجاتتون می‌ده.

نظر شما در این مورد چیه؟

  1. U315571۲۰ بهمن ۱۴۰۱

    سلام خسته نباشید
    چطور میتونم تعیین کنم همه پست ها بعد از یک تاریخی خودکار حذف بشن؟

    • رضا راد۲۴ بهمن ۱۴۰۱

      سلام پیشنهاد نمیشه بخاطر سئو و فکر نمیکنم پلاگینی باشه برای اینکار

  2. کاربر مهمان۲۳ دی ۱۳۹۷

    مرسی آقای حسینی راد

  3. کاربر مهمان۲۲ دی ۱۳۹۷

    بسیار عالی ممنون

  4. کاربر مهمان۲۲ دی ۱۳۹۷

    بسیار عالی

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.