list_renderer = $this->get_list_renderer(); } /** * Render posts HTML using Generated_List_Renderer * * @param array $posts Array of WP_Post objects. * @return string Rendered HTML. */ public function render_posts_html( $posts ) { if ( empty( $posts ) ) { return $this->render_no_posts_message(); } ob_start(); foreach ( $posts as $post ) { $this->list_renderer->render_list_item( $post ); } return ob_get_clean(); } /** * Render no posts message * * @return string HTML for no posts message */ public function render_no_posts_message() { return '
'; } /** * Render pagination info * * @param int $page Current page. * @param int $total_posts Total number of posts. * @param int $per_page Posts per page. * @return string Pagination HTML. */ public function render_pagination_info( $page, $total_posts, $per_page ) { $start = ( ( $page - 1 ) * $per_page ) + 1; $end = min( $page * $per_page, $total_posts ); return sprintf( '