[Помогите] Удаление прикрепленных медиафайлов при удалении поста

Тема в разделе "Wordpress", создана пользователем реалти, 4 ноя 2013.

Модераторы: DzSoft, Sorcus
  1. реалти

    реалти

    Регистр.:
    30 янв 2009
    Сообщения:
    364
    Симпатии:
    67
    Собственно САБЖ.
    Как настроить, чтоб при удалении поста и удалялись связанные медиафайлы, а не переносились в неприкрепленные.
     
  2. xoxmo

    xoxmo Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    143
    Симпатии:
    86
    в файл functions.php добавьте следующий код:
    Код:
    function 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 ) ) {
                // запись ошибок в лог
            }
        }
    }
    add_action('before_delete_post', 'delete_post_media');
     
  3. реалти

    реалти

    Регистр.:
    30 янв 2009
    Сообщения:
    364
    Симпатии:
    67
    А корзину тоже обработает?
     
  4. xoxmo

    xoxmo Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    143
    Симпатии:
    86
    Wordpress Codex говорит, что before_delete_post срабатывает только когда пост удаляется из корзины.