@@ -371,8 +371,31 @@ public function get_status( \WP_REST_Request $request ) {
371
371
372
372
if ( $ this ->is_wpcom () ) {
373
373
require_lib ( 'memberships ' );
374
- $ blog_id = get_current_blog_id ();
375
- return (array ) get_memberships_settings_for_site ( $ blog_id , $ product_type , $ is_editable , $ source );
374
+ $ blog_id = get_current_blog_id ();
375
+ $ membership_settings = get_memberships_settings_for_site ( $ blog_id , $ product_type , $ is_editable , $ source );
376
+
377
+ if ( is_wp_error ( $ membership_settings ) ) {
378
+ // Get error messages from the $membership_settings.
379
+ $ error_codes = $ membership_settings ->get_error_codes ();
380
+ $ error_messages = array ();
381
+
382
+ foreach ( $ error_codes as $ code ) {
383
+ $ messages = $ membership_settings ->get_error_messages ( $ code );
384
+ foreach ( $ messages as $ message ) {
385
+ // Sanitize error message
386
+ $ error_messages [] = esc_html ( $ message );
387
+ }
388
+ }
389
+
390
+ $ error_messages_string = implode ( ' ' , $ error_messages );
391
+ // translators: %s is a list of error messages.
392
+ $ base_message = __ ( 'Could not get the membership settings due to the following error(s): %s ' , 'jetpack ' );
393
+ $ full_message = sprintf ( $ base_message , $ error_messages_string );
394
+
395
+ return new WP_Error ( 'membership_settings_error ' , $ full_message , array ( 'status ' => 404 ) );
396
+ }
397
+
398
+ return (array ) $ membership_settings ;
376
399
} else {
377
400
$ payload = array (
378
401
'type ' => $ request ['type ' ],
0 commit comments