我目前正在使用钩子 wp_trash_post 在 WooCommerce 产品被丢弃时触发我的自定义 API。这适用于单个垃圾的情况。但是,在大容量垃圾的情况下,此事件会执行多次。例如,如果选择了 3 个产品进行回收,则此事件将触发 3 次。
我需要针对 Bulk Trash 执行一次但具有所有产品 ID 的不同事件。希望清楚明白。请帮忙!
回答1
您的 API 调用必须使用 foreach 循环,因此正在运行 foreach 帖子 ID。您可以捕获变量中的 ID 并在 if 和 foreach 语句完成后执行 API 调用:
function wpdocs_trash_multiple_posts( $post_id = '' ) {
$trashed_ids = [];
if ( isset( $_GET['post'] ) && is_array( $_GET['post'] ) ) {
foreach ( $_GET['post'] as $post_id ) {
$trashed_ids[] = $post_id;
}
} else {
$trashed_ids[] = $post_id;
}
// Do something here, $trashed_ids array
// contains either one, or several IDs
}
add_action( 'wp_trash_post', 'wpdocs_trash_multiple_posts' );