繁体   English   中英

使用 get_posts 进行 Wordpress 分页

[英]Wordpress pagination with get_posts

我找不到关于如何在 wordpress 中为自定义循环添加分页的明确答案。 根据我从 codex 中的理解,我应该使用 get_posts() (或者我错了,我应该使用 WP_Query 或 query_posts?)

假设我有一个自定义帖子类型entry宽度分类法entry_cat ,我想显示类别为cat-1cat-2 entry并添加分页。

我的代码主要工作:

<?php
$pageda = get_query_var('paged') ? get_query_var('paged') : 1;
$posts_per_page = get_option('posts_per_page');
$post_offset = ($pageda - 1) * $posts_per_page;
$args = array(
    'numberposts'   =>  $posts_per_page,
    'post_type'     =>  'entry',
    'offset'        =>  $post_offset,
    'tax_query'     =>  array(
        'relation'  =>  'OR',
        array(
            'taxonomy'  =>  'entry_cat',
            'field'     =>  'slug',
            'terms'     =>  'cat-1',
        ),
        array(
            'taxonomy'  =>  'entry_cat',
            'field'     =>  'slug',
            'terms'     =>  'cat-2',
        ),
    ),
);
$posts=get_posts($args);
$args['numberposts'] = -1;
$posts_count=count(get_posts($args));
if($posts):
foreach($posts as $post):
?>
    <?php the_title() ?><br />
<?php 
endforeach;
endif;
echo paginate_links(array(
    'current'   =>  $pageda,
    'total'     =>  ceil($posts_count / $posts_per_page),
));
?>

但我有两个问题。

  1. 它不能用于首页。
  2. 它从数据库中获取帖子两次只是为了计算它们。 是否有一个功能可以让我检查分类组合中的帖子数量而不查询它们?

我什至正确地解决了这个问题吗? 如果没有,最好的选择是什么?

比在 WordPress 中使用 wp-pagenavi 插件和自定义查询更好,例如这个带有 wp-pagenavi 插件的问题:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$myquery = new WP_Query(
    array(
        'posts_per_page' => '2',
        'paged'=>$paged
        // add any other parameters to your wp_query array
    )   
);  
?>

<?php
if ($myquery->have_posts()) :  while ($myquery->have_posts()) : $myquery->the_post();
?>

<!-- Start your post. Below an example: -->

<div class="article-box">                               
<h2 class="article-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="article-excerpt"><?php echo(get_the_excerpt()); ?></p>                        
</div>

<!-- End of your post -->

<?php endwhile; ?>
<?php wp_pagenavi( array( 'query' => $myquery ) ); ?><!-- IMPORTANT: make sure to include an array with your previously declared query values in here -->
<?php wp_reset_query(); ?>
<?php else : ?>
<p>No posts found</p>
<?php endif; ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM