Pagina o conjunto de resultados de $ wpdb-> get_results ()

Existe uma maneira fácil de paginar o conjunto de resultados vindo de $ wpdb-> get_results ()?

Eu quero obter uma lista paginada de comentários de um usuário na página author_archive – alguns usuários da comunidade têm> 500 comentários, então a paginação é importante.

Existe uma maneira construída de fazer isso com o WordPress, ou eu preciso construí-lo sozinho?

[Atualizado para adicionar código]

 comments, $wpdb->posts WHERE user_id = $thisauthor->ID AND comment_post_id = ID AND comment_approved = 1 ORDER BY comment_ID DESC LIMIT 100 "; $comments_array = $wpdb->get_results($querystr, OBJECT); if ($comments_array): ?> 

Recent Comments

Solutions Collecting From Web of "Pagina o conjunto de resultados de $ wpdb-> get_results ()"

Você pode usar a function paginate_links () para qualquer paginação.

Para o seu caso específico:

 $total = $wpdb->get_var(" SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE user_id = $thisauthor->ID AND comment_post_id = ID AND comment_approved = 1 "); $comments_per_page = 100; $page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1; echo paginate_links( array( 'base' => add_query_arg( 'cpage', '%#%' ), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil($total / $comments_per_page), 'current' => $page )); 

para aqueles que procuram uma resposta completa com base na pergunta e @ sorich87 resposta.

Eu pensei que deveria publicar a solução aqui, para pessoas como eu (wordpress beginner).

 //use in your custom page or custom post template global $wpdb; $per_page = 5; $page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1; if ($page > 1) { $offset = $page * $per_page - $per_page; } else { $offset = $page; } $the_post = "select id,post_title from $wpdb->posts where post_type in ('buy','rent') and post_status='publish' " . "order by id desc limit $per_page offset $offset"; $details = $wpdb->get_results($the_post, OBJECT); //do foreach to display your post details. //paste this, where you want to display the pagination $total = $wpdb->get_var("SELECT count(id) from $wpdb->posts where post_type in ('buy','rent') and post_status='publish' order by id desc"); echo paginate_links(array( 'base' => add_query_arg('cpage', '%#%'), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil($total / $per_page), 'current' => $page )); 

É assim que eu trabalhei para o meu site WordPress