如何显示X个总数的1-5个结果

时间:2015-09-11 作者:Keefer

我知道我正在做一些在WordPress上已经做了1000次的事情,但我很难在互联网上找到它的术语。

我有一个自定义类别模板页面,有一个while循环,显示前5个结果(其中有5个以上)。

我如何在while内输出显示结果中相对位置和总数的内容:

我知道如何获得帖子数量:

<?php
   $catcount = new WP_Query( \'cat=4&posts_per_page=-1\' );
?>
但不确定如何设置分页和相关结果,这意味着

结果1-10/<?php echo $total->found_posts; ?>

如何获取结果值1(共2个),然后为后续页面创建分页?

3 个回复
最合适的回答,由SO网友:Sergey Serduk 整理而成

这是一个很长的时间,我有完全相同的任务,这里是解决方案

$from = ($query->query_vars[\'posts_per_page\'] * $paged) - ($query->query_vars[\'posts_per_page\'] - 1);
if(($query->query_vars[\'posts_per_page\'] * $paged) <= ($query->found_posts)){
  $to = ($query->query_vars[\'posts_per_page\'] * $paged);
}else{
  $to = $query->found_posts;
}
if($from == $to){
  $from_to = $from;
}else{
  $from_to = $from.\' - \'.$to;
}
这不是一个完美的代码,但它在大多数情况下都能工作。祝你今天愉快!)

SO网友:Luis Rivera

如果使用默认WP\\U查询,可以在循环中执行以下操作:

if ( have_posts() ) {
    global $wp_query;
    $paged = !empty($wp_query->query_vars[\'paged\']) ? $wp_query->query_vars[\'paged\'] : 1;
    $prev_posts = ( $paged - 1 ) * $wp_query->query_vars[\'posts_per_page\'];
    $from = 1 + $prev_posts;
    $to = count( $wp_query->posts ) + $prev_posts;
    $of = $wp_query->found_posts;

    // ... Display the information, for example
    printf( \'%s to %s of %s\', $from, $to, $of );

    // Then your normal loop
    while ( have_posts() ) {
        //...
    }
}
如果使用自定义查询,可以这样做:

$myquery = new WP_Query($yourqueryargs);
if ( $myquery->have_posts() ) {
    $paged = !empty($myquery->query_vars[\'paged\']) ? $myquery->query_vars[\'paged\'] : 1;
    $prev_posts = ( $paged - 1 ) * $myquery->query_vars[\'posts_per_page\'];
    $from = 1 + $prev_posts;
    $to = count( $myquery->posts ) + $prev_posts;
    $of = $myquery->found_posts;

    // ... Display the information, for example
    printf( \'%s to %s of %s\', $from, $to, $of );

    // Then your normal loop
    while ( have_posts() ) {
        //...
    }
}
Even better - 创建一个可用于全局$wp\\u查询或任何自定义查询的函数。

function myThemePostsNow ( $query = null ) {
    global $wp_query;

    if ( isset($query) && !($query instanceof WP_Query) ) {
        return; // Cancel if a query has been set and is not a WP_Query instance
    }
    elseif ( !isset($query) ) {
        $query = $wp_query; // If $query is not set, use global $wp_query data
    }

    if ( ! $query->have_posts() ) {
        return; // Cancel if $query don\'t have posts
    }

    // If we made it here it means we have a WP_Query with posts

    $paged = !empty($query->query_vars[\'paged\']) ? $query->query_vars[\'paged\'] : 1;
    $prev_posts = ( $paged - 1 ) * $query->query_vars[\'posts_per_page\'];
    $from = 1 + $prev_posts;
    $to = count( $query->posts ) + $prev_posts;
    $of = $query->found_posts;

    // Return the information
    return sprintf( \'%s to %s of %s\', $from, $to, $of );
}
然后调用你的函数

if ( have_posts() ) {

    echo myThemePostsNow();

    while ( have_posts() ) {
        //...
    }
}
或在自定义查询中,如:

if ( $myquery->have_posts() ) {

    echo myThemePostsNow();

    // Then your normal loop
    while ( have_posts() ) {
        //...
    }
}

SO网友:webmaven

好的,下面是如何使用分页进行自定义wp查询的方法,我还建议您安装此插件:https://wordpress.org/plugins/wp-pagenavi/这使生活变得更简单:)一旦安装了此插件,就可以将此代码添加到主题中的自定义页面模板、存档页面和类别页面。

        <?php
        $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
        $query_args = array(
            \'post_type\' => \'post\', //custom post type as well
            \'posts_per_page\' => 5, //number of posts per page
            \'paged\' => $paged,
            \'cat\' => $catID, //category ID
        );
        $magic_all_posts_query = new WP_Query( $query_args );
        ?>     
        <?php
        if ( $cn_all_posts_query->have_posts() ) : while ( $magic_all_posts_query->have_posts() ) : $cn_all_posts_query->the_post();
        ?>
        <div class="entry-single <?php echo $class ?>">
             <h1 class="entry-title">
                  <a href="<?php the_permalink() ?>">
                       <?php the_title(); ?>
                  </a>
             </h1>
             <div class="entry-content">
                  <?php
                       $content = get_the_content();
                  ?>
             </div>
        </div>
        <?php endwhile;
            wp_pagenavi( array( \'query\' => $cn_all_posts_query ) );
        ?>
如果你在这方面遇到任何障碍,一定要告诉我们。

相关推荐

Ajax Filtering Pagination

我知道这是一个常见的问题,但我找不到解决办法。我在用户点击复选框时进行了ajax过滤。在用户单击分页之前,一切都正常。当然,我们现在使用的是管理ajax。php页面和分页链接不工作。这是代码。HTML复选框:<input type=\"checkbox\" id=\"telegram_chk\" checked> <input type=\"checkbox\" id=\"twitter_chk\" checked> <input type=\"checkbo