ویژگی تصویر

آموزش تابع wp_trash_post() در وردپرس و کاربرد آن

  /  وردپرس   /  تابع wp_trash_post در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع wp_trash_post() در وردپرس برای انتقال یک نوشته (یا هر نوع پست تایپ) به سطل زباله (Trash) استفاده می‌شود. این تابع وضعیت پست را به “trash” تغییر می‌دهد و به‌صورت برنامه‌ای همان رفتار رابط کاربری حذف (Move to Trash) را اجرا می‌کند. در ادامه کاربردها، پارامترها، مثال‌های عملی و نکات حرفه‌ای را بررسی می‌کنیم.

چه زمانی از wp_trash_post() استفاده کنیم؟

  • وقتی می‌خواهید یک پست از طریق کد (مثلاً در افزونه یا وظایف زمان‌بندی شده) به سطل زباله منتقل شود.
  • برای پیاده‌سازی فرآیندهای پاکسازی دوره‌ای که ابتدا پست‌ها را به Trash می‌فرستند و سپس بعد از مدتی حذف دائمی می‌کنند.
  • زمانی که نیاز دارید قبل از حذف کامل، امکان بازیابی را برای مدیر فراهم کنید.

امکانات و رفتار تابع

در سطح کلی، wp_trash_post():

  • وضعیت پست را به “trash” تغییر می‌دهد.
  • قابلیت‌ها (capabilities) را بررسی می‌کند (معمولاً delete_post).
  • هوک‌ها (Actions) مرتبط را اجرا می‌کند تا افزونه‌ها و قالب‌ها بتوانند به رویداد واکنش نشان دهند.
  • در صورت موفقیت، مقدار true و در غیر این صورت false را برمی‌گرداند.

پارامترها و مقدار بازگشتی

پارامترتوضیح
post_idشناسه عددی پست که باید به سطل زباله منتقل شود.
مقدار بازگشتیتوضیح
trueانتقال به Trash موفقیت‌آمیز بود.
falseخطا در انتقال (مثلاً دسترسی کافی نیست یا پست پیدا نشد).

نمونه ساده: انتقال پست به Trash

if ( wp_trash_post( 123 ) ) {
    // موفقیت: پست با ID = 123 به سطل زباله منتقل شد
} else {
    // خطا: نتوانست پست را به سطل زباله منتقل کند
}

در این مثال تابع wp_trash_post() برای پست با شناسه 123 فراخوانی شده است. در صورتی که کاربر جاری توانایی حذف پست را نداشته باشد یا پست وجود نداشته باشد، تابع false بازمی‌گرداند.

مثال پیشرفته: پاکسازی خودکار پست‌های قدیمی (انتقال به Trash)

$args = array(
    'post_type'      => 'post',
    'date_query'     => array(
        array(
            'before' => '1 year ago',
        ),
    ),
    'posts_per_page' => -1,
    'fields'         => 'ids',
);

$old_posts = get_posts( $args );

foreach ( $old_posts as $post_id ) {
    wp_trash_post( $post_id );
}

در این کد ابتدا همه پست‌های قدیمی‌تر از یک سال به‌صورت شناسه دریافت شده و سپس هر کدام با wp_trash_post() به سطل زباله منتقل می‌شوند. این روش برای اسکریپت‌های پاکسازی در افزونه‌ها یا کرون‌های سفارشی مناسب است.

بکارگیری هوک‌ها همراه wp_trash_post()

وردپرس پس از انتقال پست به trash، هوک‌هایی را اجرا می‌کند که افزونه‌ها می‌توانند به آن واکنش نشان دهند. یکی از هوک‌های رایج:

add_action( 'trashed_post', 'my_trashed_post_handler' );

function my_trashed_post_handler( $post_id ) {
    // عملیات دلخواه بعد از انتقال به سطل زباله
}

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

تفاوت wp_trash_post() با wp_delete_post() و wp_untrash_post()

  • wp_trash_post(): پست را به سطل زباله منتقل می‌کند، قابل بازیابی است.
  • wp_untrash_post(): پستی که در Trash قرار دارد را بازیابی می‌کند (وضعیت قبلی را برمی‌گرداند).
  • wp_delete_post(): پست را حذف کامل می‌کند (پارامتر دوم true باعث حذف کامل و نهایی می‌شود).

مثال: بازیابی و حذف نهایی

// بازیابی پست
wp_untrash_post( 123 );

// حذف کامل پست
wp_delete_post( 123, true ); // پارامتر دوم true برای حذف دائمی

با استفاده از wp_untrash_post() می‌توانید پست‌هایی که در Trash قرار دارند را به وضعیت قبلی بازگردانید. و اگر نیاز به حذف نهایی دارید، wp_delete_post() با پارامتر دوم true پست را به‌صورت دائمی حذف می‌کند.

نکات امنیتی و بهترین شیوه‌ها

  • همیشه قبل از فراخوانی wp_trash_post() بررسی کنید که کاربر جاری دارای capability مناسب (معمولاً delete_post) باشد.
  • اگر عملیات از طریق فرم‌های فرانت‌اند انجام می‌شود، از nonce برای جلوگیری از CSRF استفاده کنید.
  • برای عملیات حجیم، از اجرای پی‌درپی در یک درخواست طولانی خودداری کنید و از WP-Cron یا پردازش‌های دسته‌ای استفاده کنید تا حافظه مصرفی کنترل شود.
  • اگر پلاگین شما فایل‌ها یا اطلاعات جانبی مرتبط با پست دارد، به جای حذف خودکار، بهتر است در هوک trashed_post آنها را مدیریت کنید تا در صورت بازیابی پست اطلاعات از دست نرود.

جمع‌بندی و توصیه‌های حرفه‌ای

تابع wp_trash_post() ابزار ساده و موثر برای مدیریت حذف پست‌ها در وردپرس است و مزیت اساسی آن امکان بازیابی پست‌ها از سطل زباله می‌باشد. هنگام استفاده در افزونه‌ها یا اسکریپت‌های خودکار، حتماً مدیریت توانایی‌ها، استفاده از هوک‌های مناسب و رعایت مسائل عملکردی را در نظر بگیرید. در بسیاری از پروژه‌های حرفه‌ای، ترکیب wp_trash_post با لاگ‌برداری و پردازش دسته‌ای، باعث می‌شود تغییر وضعیت محتوا قابل پیگیری و بازگشت‌پذیر باقی بماند.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: