在WordPress中,删除文章时默认不会自动删除与之关联的媒体文件(如图片、附件等)。为了在删除文章时自动删除这些媒体文件,你可以通过添加自定义代码到主题的 functions.php
文件中来实现。以下是一个示例代码,它会在删除文章时自动删除文章中的图片附件以及特色图像。
代码一
function delete_associated_media($post_id) {
// 检查文章类型,确保只处理文章类型为 'post' 的文章
if (get_post_type($post_id) == 'post') {
// 获取文章的媒体附件
$attachments = get_attached_media('', $post_id);
// 删除所有媒体附件
foreach ($attachments as $attachment) {
wp_delete_attachment($attachment->ID, true);
}
// 删除特色图像
$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_associated_media');
代码二
/* 删除文章时删除图片附件
/* ———————— */
function delete_post_and_attachments($post_ID) {
global $wpdb;
//删除特色图片
$thumbnails = $wpdb->get_results( “SELECT * FROM $wpdb->postmeta WHERE meta_key = ‘_thumbnail_id’ AND post_id = $post_ID” );
foreach ( $thumbnails as $thumbnail ) {
wp_delete_attachment( $thumbnail->meta_value, true );
}
//删除图片附件
$attachments = $wpdb->get_results( “SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = ‘attachment’” );
foreach ( $attachments as $attachment ) {
wp_delete_attachment( $attachment->ID, true );
}
$wpdb->query( “DELETE FROM $wpdb->postmeta WHERE meta_key = ‘_thumbnail_id’ AND post_id = $post_ID” );
}
add_action(‘before_delete_post’, ‘delete_post_and_attachments’);
代码说明:
delete_associated_media($post_id)
: 这是一个自定义函数,用于删除与文章关联的媒体文件和特色图像。get_attached_media('', $post_id)
: 获取与文章关联的所有媒体附件。wp_delete_attachment($attachment->ID, true)
: 删除指定的媒体附件。第二个参数true
表示同时删除媒体文件的实际文件。get_post_thumbnail_id($post_id)
: 获取文章的特色图像ID。wp_delete_attachment($featured_image_id, true)
: 删除特色图像。add_action('before_delete_post', 'delete_associated_media')
: 在删除文章之前触发delete_associated_media
函数。
值得注意的是:当你在删除文章时先执行函数内容,删除特色图片以及图片附件,但是如果在使用action delete_post而不是before_delete_post将导致删除文章后因媒体附件与文章关联已取消而无法正确删除。
1.本站所有内容只做学习和交流使用。 版权归原作者所有。
2.保证站内提供的所有可下载源码资源(软件等)都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
3.本站部分内容均收集于网络!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。请联系站长邮箱:admin#ibian.online(#换成@)处理!