تابع wp_trash_post در وردپرس
تابع 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 با لاگبرداری و پردازش دستهای، باعث میشود تغییر وضعیت محتوا قابل پیگیری و بازگشتپذیر باقی بماند.
آیا این مطلب برای شما مفید بود ؟




