【问题标题】:How to get specific number of posts from a particular post-type with pagination in wordpress如何在wordpress中使用分页从特定帖子类型中获取特定数量的帖子
【发布时间】:2014-05-13 01:49:29
【问题描述】:

我创建了一个帖子类型 grammer 和名为 subject 的分类。 grammer 中有近 220 个帖子。

现在我只想从grammer 的帖子类型taxonomy => 'subject' 中检索 25 个帖子,它的 slug 值为level-1-beginner

这些结果应该分页,每页只有 1 个帖子。

我尝试使用WP_Query,但似乎无法限制获取的帖子总数。

$args = array (
'post_type'              => 'grammer',
'post_status'            => 'Published',
'tax_query' => array(
    array(
        'taxonomy' => 'subject',
        'field' => 'slug',
        'terms' => 'level-1-beginner'
    )
),
'pagination'             => false,
'paged'                  => '1',
'posts_per_page'         => '1',
'order'                  => 'ASC',
'orderby'                => 'rand');

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
    $query->the_post();
    echo the_content();

}
} else {
// no posts found
} ?>
<div class="tl-pagination"><?php wp_pagenavi(); ?></div>

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • posts_per_page 确实应该限制您的帖子,如果不是,则意味着您没有查看正确的模板或没有查看正确的循环。您能否使用上面发布的查询验证您正在查看正确的循环?
  • 是的,实际上它显示了 1 个帖子标准页面。但它获得了所有 45 个带有“level-1-beginner”术语的帖子,而我只想获得 25 个帖子并每页显示 1 个帖子。
  • 好的,你是说你只想要 25 页,即使有 45 页,对吗?您可以编辑您的原始问题并添加您的分页代码吗?
  • 是的,我想总共显示 25 页。每页分页使用 1 个帖子。
  • 仅供参考,post_status 应该是 publish 而不是 Published

标签: php wordpress


【解决方案1】:

您可以尝试使用Paginate Links, 代码如下所示:

<?php if($query->max_num_pages > 1) : ?>
    <?php previous_posts_link('&laquo; Previous Posts') ?>
    <?php next_posts_link('More Posts &raquo;', ($query->max_num_pages > 25) ? 25 : $query->max_num_pages) ?>
    <?php
            $big = 9999999999;
            $args = array(
                'base'          => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                'format'        => '?paged=%#%',
                'current'       => max( 1, get_query_var('paged') ),
                'total'         => ($query->max_num_pages > 25) ? 25 : $query->max_num_pages,
                'end_size'      => 0,
                'mid_size'      => 2,
                'prev_next'     => False
            ); 
            echo paginate_links($args); 
    ?>
<?php endif; ?>

total 参数将显示的页数限制为 25。next_posts_link() Function 还具有您可以设置的最大页数参数。

您必须设置 CSS 样式以显示哪个页面处于活动状态。每个页码有 2 个类:

page-numbers,如果是当前页面:current,因此您需要相应地设置它们的样式。

【讨论】:

  • 这将限制循环中的帖子总数?
  • 是的,它会测试是否有页面,如果页面数大于25,则停止在25,否则显示所有页面。
  • 谢谢你,还有一件事。下一个和上一个链接无法正常工作。当我单击下一步并转到第二个帖子时,它只显示我以前的链接和页码。它不会显示我所在的页码。
  • 我已经更新了我的答案,您需要在 css 中设置当前页码的样式。您可能需要使用开发工具,例如 firebug 或 chrome。
猜你喜欢
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
  • 2016-08-10
  • 1970-01-01
相关资源
最近更新 更多