Wpdb result with pagination

时间:2020-07-23 作者:Dab Patoel

我得到了这个函数,它在没有分页的情况下正常工作,但现在我需要在页面上进行一些分页,因为列表现在已经长大了,我该怎么做呢?

function listing_items($args){
    global $wpdb;

    $listQ = new WP_Query( $args );
    $pid = get_the_ID( );

    $return = \'\';

    if ( $listQ->have_posts() ) {

        while ( $listQ->have_posts() ) {
            $listQ->the_post();
            $listing = $wpdb->get_results( "SELECT * FROM wp_listings WHERE post_id =".get_the_ID() );
            echo $pid;
            $summary = $listing[0]->home_description;
            $excerpt = wp_trim_words( $summary, $num_words = 25, $more =\'.....\' );

            $return .= \'<div class="listing-item" data-location="lat: \'.$listing[0]->lat.\', lng: \'.$listing[0]->lng.\'" data-lat="\'.$listing[0]->lat.\'" data-lng="\'.$listing[0]->lng.\'">\';

            $return .= \'<div class="listing-image"><a href="\'.esc_url( get_post_permalink() ).\'">\';
            if( $listing[0]->image == \'\' ){
                $return .= \'<img src="http://via.placeholder.com/300x300" alt="" />\';
            } else {
                $return .= \'<img src="\'.home_url().\'/media/listings/\'.get_the_ID().\'/thumb_\'.$listing[0]->image.\'" alt="" />\';
            }
            $return .= \'</a></div>\';

            $return .= \'<div class="listing-details">\';
            $return .= \'<h3 class="listing-title"><a href="\'.esc_url( get_post_permalink() ).\'">\'.$listing[0]->title.\'</a></h3>\';
            $return .= \'<div class="listing-detail">\'.$listing[0]->accommodates . \' guests<span class="middot">&#183;</span>\' .$listing[0]->bedrooms . \' bedrooms<span class="middot">&#183;</span>\' .$listing[0]->bathrooms . \' bathrooms</div>\';
            $return .= \'<div class="listing-excerpt">\' .$excerpt.\'</div>\';
            $return .= \'<div class="listing-location"><a class="btn-listing" href="\'.esc_url( get_post_permalink() ).\'">Read More</a></div>\';
            $return .= \'</div>\';
            $return .= \'</div>\';
        }

        /* Restore original Post Data*/
        wp_reset_postdata();

        return $return;

    } else {
        echo \'<p class="no-response">No Listing yet here</p>\';
    }
}

2 个回复
SO网友:mozboz

您的内部查询似乎只从wp_listings, 我想你是指在外部WP\\u查询上分页?

此处对此进行了描述:

https://developer.wordpress.org/reference/classes/wp_query/#pagination-parameters

因此,要获得第4页,每页20篇文章,您需要:

$args[\'posts_per_page\'] = 20;
$args[\'paged\'] = 4;
$listQ = new WP_Query( $args );
有关分页的详细信息,包括如何在此处呈现分页链接:

https://developer.wordpress.org/themes/functionality/pagination/

SO网友:Agustinus

@mozboz,我有和@dab patoel差不多的函数,我按照你说的做,结果我可以在添加时得到分页页面$args[\'posts_per_page\'] = 2 我把$next_posts = get_next_posts_link(); 但它似乎不起作用,我如何才能获得链接到下一个工作结果?

相关推荐

Can't Add Pagination

我无法添加分页来在页面之间划分帖子并在页面之间导航。目前所有20篇帖子我都有一次加载。我想在我的页面底部添加分页,并在5之前查看帖子。我有一个自定义的帖子类型,我将其定义为Project。我有两页。主页和日志。主页以我的项目帖子类型为特征,日志以我的常规博客帖子为特征。我希望这两页都有分页。我的当前索引。php是我的主页,如下所示:<?php get_header(); ?> <?php get_footer(); ?> <div class=\"p