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
- 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. - 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!