注意
あなた自身の責任で使用してください、それはバグがあるので、私はそれがすべての添付ファイルを削除することになるいくつかのインスタンスに遭遇しました。わからない。
ページが削除されたときに、そのページに関連付けられているメディアを削除することは可能ですか? [メディアの挿入]ページで[このページにアップロードされた]画像でフィルタできることを知っているので、それらのリストを取得して、ページの削除中にそれらを削除することはできますか?
今はDelete Postに引っ掛けて遊んでいます。たった今...それは何もしませんが、私はそれがどこかにあると思います。
function del_post_media($pid) {
$query = "DELETE FROM wp_postmeta
WHERE ".$pid." IN
(
SELECT id
FROM wp_posts
WHERE post_type = 'attachment'
)";
global $wpdb;
if ($wpdb->get_var($wpdb->prepare($query))) {
return $wpdb->query($wpdb->prepare($query));
}
return true;
}
add_action('delete_post', 'del_post_media');
これはどう? get_posts() functionリファレンスページの例を改作したものです。
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 ) ) {
// Log failure to delete attachment.
}
}
}
add_action( 'before_delete_post', 'delete_post_media' );
私はあなたがこのような何かを探していると思いますか…?
function delete_associated_media($id) {
// check if page
if ('page' !== get_post_type($id)) return;
$media = get_children(array(
'post_parent' => $id,
'post_type' => 'attachment'
));
if (empty($media)) return;
foreach ($media as $file) {
// pick what you want to do
wp_delete_attachment($file->ID);
unlink(get_attached_file($file->ID));
}
}
add_action('before_delete_post', 'delete_associated_media');