انجمن


حذف تصاویر پست همراه با حذف پست  (۵ نوشته)

  • ir80

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۷۳
    تشکر شده: ۱۷ بار
    # نوشته شده: ۵ سال پیش
    ۱۴ مرداد ۱۳۹۷ - ۰۲:۵۴

    با سلام

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

    خیلی خیلی ممنون میشم اگه کسی بتونه کمک کنه.

    با تشکر

  • masihdindar

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳
    تشکر شده: ۲ بار
    # نوشته شده: ۵ سال پیش
    ۱۵ مرداد ۱۳۹۷ - ۲۳:۰۳

    درود.
    کد زیر رو در فایل functions.php قالبتون قرار بدید :

    function masih_delete_post_media( $post_id ) {
        $attachments = get_posts( array(
            'post_type'      => 'attachment',
            'posts_per_page' => -1,
            'post_status'    => 'any',
            'post_parent'    => $post_id
        ) );
    
        foreach ( $attachments as $attachment ) {
            if ( false === wp_delete_attachment( $attachment->ID ) ) {
                // Delete Images too!
            }
        }
    }
    add_action( 'before_delete_post', 'masih_delete_post_media' );

    و راه دیگش هم استفاده از افزونه هست که همین کار رو براتون انجام میده:
    DX Delete Attached Media
    https://wordpress.org/plugins/dx-delete-attached-media

    کاربران زیر به‌خاطر این نوشته تشکر کرده‌اند:
    ir80
  • ir80

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۷۳
    تشکر شده: ۱۷ بار
    # نوشته شده: ۵ سال پیش
    ۱۸ مرداد ۱۳۹۷ - ۰۷:۳۲

    masihdindar گفت:
    درود.
    کد زیر رو در فایل functions.php قالبتون قرار بدید :

    function masih_delete_post_media( $post_id ) {
        $attachments = get_posts( array(
            'post_type'      => 'attachment',
            'posts_per_page' => -1,
            'post_status'    => 'any',
            'post_parent'    => $post_id
        ) );
    
        foreach ( $attachments as $attachment ) {
            if ( false === wp_delete_attachment( $attachment->ID ) ) {
                // Delete Images too!
            }
        }
    }
    add_action( 'before_delete_post', 'masih_delete_post_media' );

    و راه دیگش هم استفاده از افزونه هست که همین کار رو براتون انجام میده:
    DX Delete Attached Media
    https://wordpress.org/plugins/dx-delete-attached-media

    ضمن تشکر، مهم که نیست در کجای فایل فانکشن قرار بدیم؟ هنوز تست نکردم ولی تمام سایزهای تصویر رو پاک میکنه؟ (بند انگشتی، میانه و....)

  • masihdindar

    آفلاین
    عضو
    تعداد نوشته‌ها: ۳
    تشکر شده: ۲ بار
    # نوشته شده: ۵ سال پیش
    ۲۰ مرداد ۱۳۹۷ - ۱۴:۵۷

    ir80 گفت:

    ضمن تشکر، مهم که نیست در کجای فایل فانکشن قرار بدیم؟ هنوز تست نکردم ولی تمام سایزهای تصویر رو پاک میکنه؟ (بند انگشتی، میانه و....)

    خیر مهم نیست کجای functions.php باشه. مهم اینه درست قرار گرفته باشه :)

    کاربران زیر به‌خاطر این نوشته تشکر کرده‌اند:
    ir80
  • ir80

    آفلاین
    عضو
    تعداد نوشته‌ها: ۱۷۳
    تشکر شده: ۱۷ بار
    # نوشته شده: ۵ سال پیش
    ۲۰ مرداد ۱۳۹۷ - ۱۵:۱۱

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

    البته فقط بگم از افزونه wp-automatic برای برخی پستها استفاده میکنم و نمیدونم این تعداد زیاد فایلها با سایزهای مختلف بخاطر این افزونه هست یا خود وردپرس میسازه یا علت دیگه

درباره‌ی این موضوع