ユーザーを削除すると、WordPressは自分のカスタム投稿や添付ファイルではなく、このユーザーの投稿またはページを削除することができます。
特別なフックのためのアイデア?
add_action( 'delete_user', 'my_delete_user');
function my_delete_user($user_id) {
$user = get_user_by('id', $user_id);
$the_query = new WP_Query( $args );
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
wp_delete_post( $post->ID, false );
// HOW TO DELETE ATTACHMENTS ?
}
}
}
あなたが選ぶフックは適切です、そしてここに削除されたユーザーのすべてのタイプ(投稿、ページ、リンク、添付ファイルなど)のすべての投稿を削除するためにそれを使う方法があります:
add_action('delete_user', 'my_delete_user');
function my_delete_user($user_id) {
$args = array (
'numberposts' => -1,
'post_type' => 'any',
'author' => $user_id
);
// get all posts by this user: posts, pages, attachments, etc..
$user_posts = get_posts($args);
if (empty($user_posts)) return;
// delete all the user posts
foreach ($user_posts as $user_post) {
wp_delete_post($user_post->ID, true);
}
}
ユーザーの添付ファイルのみを削除する場合は、post_type
引数をany
からattachment
に変更し、wp_delete_attachment($attachment_id)
の代わりにwp_delete_post()
を使用します。