Stop worrying about the potholes in the road and enjoy the journey

Como Excluir Automaticamente Anexos de Postagens e Imagens Destacadas no WordPress

Ao gerenciar um site WordPress, você pode se deparar com situações em que precisa excluir várias postagens de uma vez. No entanto, o WordPress não exclui automaticamente anexos ou imagens destacadas associadas a essas postagens. Isso pode levar a uma desordem desnecessária na sua biblioteca de mídia e no uso de armazenamento.

Neste artigo, mostraremos como excluir automaticamente anexos e imagens destacadas ao excluir postagens no WordPress usando um trecho de código simples.

Entendendo o Problema

Por padrão, quando você exclui uma postagem no WordPress, seus anexos (como imagens, PDFs ou outras mídias) e imagens destacadas permanecem na biblioteca de mídia. Isso pode ser problemático para limpezas em larga escala ou quando você deseja garantir que todos os dados associados sejam removidos junto com a postagem.

A Solução

Para resolver isso, você pode adicionar uma função personalizada ao seu site WordPress que exclui automaticamente todos os anexos e a imagem destacada sempre que uma postagem for excluída.

Guia Passo a Passo

  1. Abra o diretório do seu tema WordPress e localize o arquivo functions.php. Alternativamente, você pode criar um plugin personalizado para este código.
  2. Adicione o seguinte trecho de código ao arquivo:
function delete_post_attachments($post_id) {
    // Verifique se o item excluído é uma postagem
    if (get_post_type($post_id) !== 'post') {
        return;
    }

    // Obtenha todos os anexos vinculados à postagem
    $attachments = get_attached_media('', $post_id);
    foreach ($attachments as $attachment) {
        wp_delete_attachment($attachment->ID, true);
    }

    // Obtenha e exclua a imagem destacada da postagem
    $featured_image_id = get_post_thumbnail_id($post_id);
    if ($featured_image_id) {
        wp_delete_attachment($featured_image_id, true);
    }
}
add_action('before_delete_post', 'delete_post_attachments');

Esta função usa o gancho before_delete_post para ser executada sempre que uma postagem for excluída. Ela remove:

  • Todos os anexos de mídia associados à postagem.
  • A imagem destacada da postagem (se configurada).

Como Funciona

A função verifica se o item excluído é uma postagem. Se for, ela recupera todos os anexos vinculados à postagem usando get_attached_media() e os exclui com wp_delete_attachment(). Além disso, remove a imagem destacada usando get_post_thumbnail_id().

Coisas a Ter em Mente

  • Esta solução funciona especificamente para postagens. Se você quiser incluir outros tipos de postagens, pode modificar a condição na função.
  • Certifique-se de testar essa funcionalidade em um ambiente de teste antes de aplicá-la em um site ao vivo.
  • Faça backup do seu banco de dados e arquivos para evitar perda acidental de dados.

Conclusão

Com este simples trecho de código, você pode simplificar seu processo de gerenciamento de postagens e garantir que nenhum anexo ou imagem destacada desnecessária seja deixado para trás ao excluir postagens. Isso é especialmente útil para exclusões em massa ou limpezas em larga escala de sites.

Esperamos que este guia ajude você a manter seu site WordPress organizado e eficiente. Se você tiver alguma dúvida ou precisar de mais assistência, sinta-se à vontade para entrar em contato!

0