2014-04-15 32 views
0

Wordpress专家可以确认 - 是否有一个简单,优雅,Wordpress本机的方式,可以将get_posts()查询分页?我试图拼凑如何从各种职位做到这一点,但似乎无法得到它的工作。我经常使用get_posts()来查询我的自定义帖子类型 - 但是如果我不能轻松分页这些,我可能会丢弃get_posts(),并养成对自定义POst类型使用wp_query()的习惯。definitive get_posts/paginate_links

我的代码有什么问题?我一直在努力解决许多PHP问题,但仍然认为自己是一个新手。

在这里尝试最简单的最清晰的选项,所以我可以理解它是如何工作的,将其用作未来项目的模板。

<div class="content-primary"> 
    <?php 
    $paged = (get_query_var('paged')) ? get_query_var( 'paged') : 1; 
    $query_args = array(
     'post_type' => 'project', 
     'posts_per_page' => 10, 
     'paged' => $paged 
     ); 

     $query_custom_posts = get_posts($query_args); 
     foreach ($query_custom_posts as $post) :  setup_postdata($post); ?> 
      <article> 
        <a href="<?php the_permalink(); ?>"> 
         <?php if (has_post_thumbnail()) :  the_post_thumbnail('thumbnail');  endif;?> 
         <h3><?php the_title(); ?></h3> 
        </a> 
        <div><?php the_date(); ?></div> 
        <div><?php the_excerpt(); ?></div> 
      </article> 
     <?php endforeach; ?> 

     <?php 
     global $query_args; 

     $big = 999999999; // need an unlikely integer 

     echo paginate_links(array(
      'base' => str_replace($big, '%#%', esc_url( get_pagenum_link($big))), 
      'format' => '?paged=%#%', 
      'current' => max(1, get_query_var('paged')), 
      'total' => $query_args->max_num_pages 
     )); 
     ?> 

    <?php wp_reset_postdata();?> 


</div> 

我真的希望这会工作,但我知道它的错误 - 我知道我的$ query_args不含MAX_NUM_PAGES。

同样可以使用Wordpress的next_posts_link()/ previous_posts_link(),而不是paginate_links(),但不确定是否可以使用get_posts()。

+0

[这可能有助于](http://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts- vs-get-posts) – brasofilo

+0

感谢brasofilo - 我已经看到了这个图,我有一半了解它(PHP新手!)但我真的只想知道get_posts()是否可以简单分页,以及如何设置语法与WordPress的本地功能。 '如何分页'并未在get_posts()的代码中描述,这让我认为这不是内置于此函数中的?只是一个明确的答案是或否 - 如果是的话,它是一个工作/简单的例子(不是插件或大规模的自定义函数 - 只是Wordpress)!助教。 – spacewindow

+0

我从来没有见过与get_posts分页......并且不能说y/n ... – brasofilo

回答

相关问题