ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حذف اتوماتیک همه ی تصاویر پست پس از زمان مشخص



mgt1234
January 6th, 2019, 13:57
سلام دوستان
یه کد یا پلاگینی میخوام که بعد از یه مدت مشخص (مثلا 30 روز) تمامی تصاویر پستهای دسته بندی خاص رو حذف کنه
اینکار برای خالی کردن فضای هاست انجام میشه چون اگه اینکار انجام نشه فضا سریعا پر میشه
اگه خود پست هم پاک کنه مشکلی نیست چون روی پستایی که No Seo هستن میخوام اینکارو انجام بدم اما هرچی پلاگین پیدا کردم فقط پست رو پاک میکنن در صورتیکه هدف اصلی من پاک کردن تصاویر داخل پسته (برای خالی کردن فضای هاست)
اگه راه حلی برای این مشکل دارید لطفا معرفی کنید. :53:

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


add_action( 'save_post', 'cleanup_old_post_images', 10, 3 );

function cleanup_old_post_images( $post_ID, $post, $update ) {
if ( $update ) return; // do nothing on update
$postid51th = get51th_postid(); // see below
if ( ! empty( $postid51th ) && is_numeric( $postid51th ) ) {
delete_post_media( $postid51th ); // see below, function in OP
}
}

function get51th_postid() {
return $GLOBALS['wpdb']->get_var(
"SELECT ID FROM " . $GLOBALS['wpdb']->posts .
" WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC
LIMIT 50, 1"
);
}

function delete_post_media( $post_id ) {
$attachments = get_posts( array(
'post_type' => 'attachment',
'nopaging' => TRUE,
'post_parent' => $post_id
) );
if ( empty( $attachments ) ) return; // added this line to prevent errors
foreach ( $attachments as $attachment ) {
if ( false === wp_delete_attachment( $attachment->ID ) ) {
// Log failure to delete attachment.
}
}
}

T.Toosi
January 6th, 2019, 16:48
add_action( 'save_post', 'cleanup_old_post_images', 10, 3 );

function cleanup_old_post_images( $post_ID, $post, $update ) {
if ( $update ) return; // do nothing on update
$postid51th = get51th_postid(111); // <----------- CAT ID
if ( ! empty( $postid51th ) && is_numeric( $postid51th ) ) {
delete_post_media( $postid51th ); // see below, function in OP
}
}

function get51th_postid($catid) {
return $GLOBALS['wpdb']->get_var(
"SELECT ID
FROM wp_posts
LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
LEFT JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
WHERE wp_term_taxonomy.term_id IN ({$catid})
GROUP BY wp_posts.ID LIMIT 50, 1"
);
}

function delete_post_media( $post_id ) {
$attachments = get_posts( array(
'post_type' => 'attachment',
'nopaging' => TRUE,
'post_parent' => $post_id
) );
if ( empty( $attachments ) ) return; // added this line to prevent errors
foreach ( $attachments as $attachment ) {
if ( false === wp_delete_attachment( $attachment->ID ) ) {
// Log failure to delete attachment.
}
}
}