@@ -446,16 +446,6 @@ public function register_taxonomy() {
446446 public function rest_api_tax_query ( $ args , $ request ) {
447447 $ tax_query = [];
448448
449- // Include terms (matches any term in list).
450- if ( isset ( $ request ['provider ' ] ) ) {
451- $ tax_query [] = [
452- 'taxonomy ' => 'prpl_recommendations_provider ' ,
453- 'field ' => 'slug ' ,
454- 'terms ' => \explode ( ', ' , $ request ['provider ' ] ),
455- 'operator ' => 'IN ' ,
456- ];
457- }
458-
459449 // Exclude terms.
460450 if ( isset ( $ request ['exclude_provider ' ] ) ) {
461451 $ tax_query [] = [
@@ -466,10 +456,27 @@ public function rest_api_tax_query( $args, $request ) {
466456 ];
467457 }
468458
469- if ( ! empty ( $ tax_query ) ) {
470- $ args ['tax_query ' ] = $ tax_query ; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
459+ $ include_providers = [];
460+ $ providers_available_for_user = \progress_planner ()->get_suggested_tasks ()->get_tasks_manager ()->get_task_providers_available_for_user ();
461+ foreach ( $ providers_available_for_user as $ provider ) {
462+ $ include_providers [] = $ provider ->get_provider_id ();
471463 }
472464
465+ // Include terms (matches any term in list).
466+ if ( isset ( $ request ['provider ' ] ) ) {
467+ $ request_providers = \explode ( ', ' , $ request ['provider ' ] );
468+ $ include_providers = \array_intersect ( $ include_providers , $ request_providers );
469+ }
470+
471+ $ tax_query [] = [
472+ 'taxonomy ' => 'prpl_recommendations_provider ' ,
473+ 'field ' => 'slug ' ,
474+ 'terms ' => $ include_providers ,
475+ 'operator ' => 'IN ' ,
476+ ];
477+
478+ $ args ['tax_query ' ] = $ tax_query ; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
479+
473480 // Handle sorting parameters.
474481 if ( isset ( $ request ['filter ' ]['orderby ' ] ) ) {
475482 $ args ['orderby ' ] = \sanitize_sql_orderby ( $ request ['filter ' ]['orderby ' ] );
0 commit comments