Ошибка после удаления пользовательского типа записи с помощью функции (корзина не используется)
Я использую функцию, которую я создал, чтобы удалять все сообщения пользователя после удаления определенного сообщения. В моем случае я использую пользовательский тип записи под названием "компания". И дополнительные пользовательские типы записей, такие как задания или события. Если профиль компании будет удален, все остальные сообщения этого пользователя также будут удалены.
Моя проблема сейчас: если я сделаю это для обычных сообщений, сообщения будут перемещены в корзину. Здесь все в порядке...
Но если я сделаю это для другого пользовательского сообщения Типы, они удаляются без мусора. Я мог бы выбросить их, если удалю в админке. Значит, корзина активна!?
Есть идеи, что происходит не так? Вот мой код:
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 );
1 answers
От довольно любопытного взгляда на источник $force_delete
аргумент в wp_delete_post()
только применяется к собственным записям, страницам и вложениям.
Мое быстрое предположение состоит в том, что для CPTS вам нужно будет использовать явную функцию wp_trash_post()
, если вам нужно поведение мусора.