@@ -100,7 +100,7 @@ public function register_routes() {
100100 'force ' => array (
101101 'type ' => 'boolean ' ,
102102 'default ' => false ,
103- 'description ' => __ ( 'Required to be true, as sites do not support trashing . ' ),
103+ 'description ' => __ ( 'Whether to set site to deleted and force deletion . ' ),
104104 ),
105105 ),
106106 ),
@@ -694,24 +694,15 @@ public function delete_item_permissions_check( $request ) {
694694 * @return WP_Error|WP_REST_Response Response object on success, or error object on failure.
695695 */
696696 public function delete_item ( $ request ) {
697- $ site = $ this ->get_site ( $ request ['id ' ] );
697+ $ blog_id = (int ) $ request ['id ' ];
698+ $ site = $ this ->get_site ( $ blog_id );
698699 if ( is_wp_error ( $ site ) ) {
699700 return $ site ;
700701 }
701702
702- if ( ! (bool ) $ request ['force ' ] ) {
703- return new WP_Error (
704- 'rest_trash_not_supported ' ,
705- /* translators: %s: force=true */
706- sprintf ( __ ( "Sites do not support trashing. Set '%s' to delete. " ), 'force=true ' ),
707- array ( 'status ' => 501 )
708- );
709- }
710-
711703 $ request ->set_param ( 'context ' , 'edit ' );
712704
713705 $ previous = $ this ->prepare_item_for_response ( $ site , $ request );
714- $ result = wp_delete_site ( $ request ['id ' ] );
715706
716707 $ response = new WP_REST_Response ();
717708 $ response ->set_data (
@@ -721,10 +712,36 @@ public function delete_item( $request ) {
721712 )
722713 );
723714
724- if ( is_wp_error ( $ result ) ) {
725- $ result ->add_data ( array ( 'status ' => 500 ) );
715+ if ( ! (bool ) $ request ['force ' ] ) {
716+ /** This action is documented in wp-includes/ms-site.php */
717+ do_action_deprecated ( 'delete_blog ' , array ( $ blog_id , false ), '5.1.0 ' );
726718
727- return $ result ;
719+ $ users = get_users (
720+ array (
721+ 'blog_id ' => $ blog_id ,
722+ 'fields ' => 'ids ' ,
723+ )
724+ );
725+
726+ // Remove users from this blog.
727+ if ( ! empty ( $ users ) ) {
728+ foreach ( $ users as $ user_id ) {
729+ remove_user_from_blog ( $ user_id , $ blog_id );
730+ }
731+ }
732+
733+ update_blog_status ( $ blog_id , 'deleted ' , 1 );
734+
735+ /** This action is documented in wp-includes/ms-site.php */
736+ do_action_deprecated ( 'deleted_blog ' , array ( $ blog_id , false ), '5.1.0 ' );
737+ } else {
738+
739+ $ result = wp_delete_site ( $ request ['id ' ] );
740+ if ( is_wp_error ( $ result ) ) {
741+ $ result ->add_data ( array ( 'status ' => 500 ) );
742+
743+ return $ result ;
744+ }
728745 }
729746
730747 /**
0 commit comments