'wp-bnb-widget-building-rooms', 'description' => __( 'Display all rooms in a building.', 'wp-bnb' ), ) ); } /** * Output the widget content. * * @param array $args Widget arguments. * @param array $instance Widget instance settings. * @return void */ public function widget( $args, $instance ): void { $title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'Rooms', 'wp-bnb' ); $building_id = ! empty( $instance['building_id'] ) ? (int) $instance['building_id'] : 0; $count = ! empty( $instance['count'] ) ? (int) $instance['count'] : -1; $show_availability = ! empty( $instance['show_availability'] ); $show_price = ! empty( $instance['show_price'] ); $layout = ! empty( $instance['layout'] ) ? $instance['layout'] : 'list'; // Auto-detect building from single building page. if ( ! $building_id && is_singular( Building::POST_TYPE ) ) { $building_id = get_the_ID(); } if ( ! $building_id ) { return; } // Get rooms for building. $search_args = array( 'building_id' => $building_id, 'limit' => $count, 'orderby' => 'title', 'order' => 'ASC', ); $rooms = Search::search( $search_args ); if ( empty( $rooms ) ) { return; } echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped if ( $title ) { echo $args['before_title'] . esc_html( apply_filters( 'widget_title', $title ) ) . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } $list_class = 'compact' === $layout ? 'wp-bnb-building-rooms-compact' : 'wp-bnb-building-rooms-list'; echo '