WordPress教程

WordPress网站实现query_posts查询万能分页代码

阿里云

WordPress 网站 query_posts 是用于从网站按照条件查询得到需要的结果。query_posts()查询函数决定了哪些文章出现在 WordPress 主 循环(loop)中,正因为如此,query_posts 函数仅用于修改主页循环(Loop),而不是在页面上生成次级循环。

如果你希望在主循环外另外生 成循环,应该新建独立的 WP_Query 对象,用这些对象生成循环。在主循环外的循环上使用 query_posts 会导致主循环运行偏差,并可能在页面上 显示出你不希望看到的内容。当我们使用 query_posts 查询得到的结果很多的情况下就需要进行分页。实现 query_posts 查询结果分页的代码如下:

也想出现在这里?联系我们
创客主机
  1. <?php
  2. //分页
  3. $paged = $_GET['paged'] ? $_GET['paged'] : 1;
  4.  
  5. //常规排序方法
  6. $args=array(
  7. 'post_type' => 'post',
  8. 'post_status'=>'publish',
  9. 'cat' => $cat, // 分类ID
  10. 'meta_key' => 'paixu',
  11. 'orderby' => 'meta_value_num',
  12. 'order' => 'ASC',
  13. 'paged' => $paged,
  14. 'posts_per_page' => '28', // 显示篇数
  15. );
  16.  
  17. //查询文章
  18. $query = new WP_Query( $args );
  19. while ($query->have_posts()) : $query->the_post(); ?>
  20. <li class="clearfix"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
  21. <?php endwhile; ?>

在循环参数里添加'paged'=>get_query_var('paged'),可以调用网站后台设置的每页显示条数,如果要分页还要进行以下的操作:

先将下的函数放到 functions.php 里;

  1. $indexlistid = 'page_id='.get_option('wpd_indexlist');
  2. $searchlistid = 'page_id='.get_option('wpd_searchlist');
  3. function lingfeng_custom_pagenavi( $custom_query,$range = 4 ) {
  4. global $paged,$wp_query;
  5. if ( !$max_page ) {
  6. $max_page = $custom_query->max_num_pages;
  7. }
  8. if( $max_page >1 ) {
  9. echo '<div class="pagination">';
  10. if( !$paged ){
  11. $paged = 1;
  12. }
  13. if( $paged != 1 ) {
  14. echo "<a href='".str_replace(array($indexlistid,$searchlistid),'',get_pagenum_link(1))."' class='extend' title='跳转到首页'>最前</a>";
  15. }
  16.  
  17. if ( $max_page >$range ) {
  18. if( $paged <$range ) {
  19. for( $i = 1; $i <= ($range +1); $i++ ) {
  20. echo "<a href='".str_replace(array($indexlistid,$searchlistid),'',str_replace(array($indexlistid,$searchlistid),'',get_pagenum_link($i))) ."'";
  21. if($i==$paged) echo " class='active'";echo ">$i</a>";
  22. }
  23. }elseif($paged >= ($max_page -ceil(($range/2)))){
  24. for($i = $max_page -$range;$i <= $max_page;$i++){
  25. echo "<a href='".str_replace(array($indexlistid,$searchlistid),'',get_pagenum_link($i)) ."'";
  26. if($i==$paged)echo " class='active'";echo ">$i</a>";
  27. }
  28. }elseif($paged >= $range &&$paged <($max_page -ceil(($range/2)))){
  29. for($i = ($paged -ceil($range/2));$i <= ($paged +ceil(($range/2)));$i++){
  30. echo "<a href='".str_replace(array($indexlistid,$searchlistid),'',get_pagenum_link($i)) ."'";if($i==$paged) echo " class='active'";echo ">$i</a>";
  31. }
  32. }
  33. }else{
  34. for($i = 1;$i <= $max_page;$i++){
  35. echo "<a href='".str_replace(array($indexlistid,$searchlistid),'',get_pagenum_link($i)) ."'";
  36. if($i==$paged)echo " class='active'";echo ">$i</a>";
  37. }
  38. }
  39.  
  40. if($paged != $max_page){
  41. echo "<a href='".str_replace(array($indexlistid,$searchlistid),'',get_pagenum_link($max_page))."' class='extend' title='跳转到最后一页'>最后</a>";
  42. }
  43. echo '<span>共['.$max_page.']页</span>';
  44. echo "</div>";
  45. }
  46. }
  47. function _paging_link( $i, $title = '' ) {
  48. if ( $title == '' ) $title = "第 {$i} 页";
  49. echo "<a href='", esc_HTML( get_pagenum_link( $i ) ), "'>{$i}</a>";
  50. }

然后在分页位置,使用下面的标签调用分页按钮。

  1. <?php
  2. //调用分页
  3. lingfeng_custom_pagenavi($query);
  4. // 重置请求数据
  5. wp_reset_postdata();
  6. ?>

除了使用之外,还可以使用 WP_Query 函数查询。代码如下:

  1. <?php $myqueryargss = array(
  2. 'post_type' => 'post',
  3. 'posts_per_page' => 9(每页的条数),
  4. 'orderby'=> 'date',
  5. 'category_name'=>'promotion',(分类名称)
  6. 'order' => 'ASC',
  7. ); ?>
  8. <?php $myquerys= new WP_Query( $myqueryargss );?>
  9. <?php if ( $myquerys->have_posts() ): ?>
  10. <?php while ( $myquerys->have_posts() ) : $myquerys->the_post(); ?>
  11. <?php if ( $myquerys->current_post < 9) : ?>
  12. <li> <b>·</b><a href="<?php the_permalink(); ?>" target="_blank"> <?php echo mb_strimwidth(get_the_title(), 0, 26, '...'); ?></a></li>
  13. <?php endif; ?>
  14. <?php endwhile; ?>
  15. <?php endif; ?>
  16. <?php wp_reset_postdata();?>

WordPress 网站实现 query_posts 查询万能分页代码

已有 201 人购买
查看演示升级 VIP立刻购买

收藏
(1)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!