特定の投稿が削除された後に、ユーザーからすべての投稿を削除するために構築した関数を使用しています。私の場合は、companyというカスタム投稿タイプを使用しています。そして仕事やイベントのような追加のカスタム投稿タイプ。会社のプロフィールが削除されると、このユーザーからの他のすべての投稿も削除されます。
今の私の問題:私が通常の投稿に対してこれを行うと、投稿はゴミ箱に移動されます。ここですべて大丈夫です...
しかし、私が他のカスタム投稿タイプに対してこれを実行すると、それらはゴミなしで完全に削除されます。管理領域でそれらを削除すると、ゴミを捨てることができます。だからゴミは活発です!
何か考えが間違っていますか?これが私のコードです:
function delete_all_posts_from_author($post_id) {
global $post;
$id = $post->ID;
// Only trigger if post type is "company"
if ( get_post_type($id) == "company" ) {
$author_id = $post->post_author;
$posts_from_author = get_posts(
array(
'posts_per_page' => -1,
'post_status' => 'publish',
'post_type' => array('event','job'),
'author' => $author_id,
'fields' => 'ids', // Only get post ID's
)
);
foreach ( $posts_from_author as $post_from_author ) {
wp_delete_post( $post_from_author, false); // Set to False if you want to send them to Trash.
}
}
}
add_action( 'publish_to_trash', 'delete_all_posts_from_author', 10, 1 );
不思議なことにソースを見たことからwp_delete_post()
only の$force_delete
引数はネイティブの投稿、ページ、そして添付ファイルに適用されます。
CPTのためにあなたがゴミの振る舞いをしたいのなら、明示的なwp_trash_post()
関数を使う必要があるだろうと私はすぐに思います。