provider_cluster = $provider_cluster; } public function build_post_query( Query_Settings $selection_settings ): array { $meta_order_keys = array( 'meta_value', 'meta_value_num' ); $arguments = array( 'order' => array( 'value' => $selection_settings->get_order(), ), 'orderby' => array( 'condition' => 'none' !== $selection_settings->get_order_by(), 'value' => $selection_settings->get_order_by(), ), // @phpcs:ignore 'meta_key' => array( 'condition' => in_array( $selection_settings->get_order_by(), $meta_order_keys, true ), 'value' => fn() => $this->get_order_by_meta_key( $selection_settings ), ), ); return Query_Utils::filter_arguments( $arguments ); } protected function get_order_by_meta_key( Query_Settings $selection ): ?string { $field_meta = $this->provider_cluster->get_field_meta( $this->provider_cluster->get_vendor_name_by_key( $selection->get_order_by_meta_field_key() ), $selection->get_order_by_meta_acf_field_id() ); if ( $field_meta->is_field_exist() ) { return $field_meta->get_name(); } return null; } }