分页解决方案,用于具有多个选项卡的多个查询 Wordpress



嘿伙计们,所以我在我们的网站上有一个项目页面,该页面利用选项卡在不同选项卡中分隔多个不同的项目类型。每个选项卡按类别运行自己的查询,按日期对该类别中的项目进行排序并显示:标题、日期、视图、作者、帖子的小摘录和特色图片。

现在的问题是我每个选项卡的帖子太多了,您必须向下滚动很长时间才能看到较旧的项目。将每个项目帖子按类别分成 4 个帖子的最佳解决方案是什么。运行单个循环、按类别将项目分成其他选项卡并对页面进行分页是否是更好的解决方案?还是有更雄辩的解决方案?

这是我带有选项卡的项目主页:

<div id="categoryTabs">
<ul id="news_style1_tabs" class="tabs">
<li><a href="#mining">Mining</a></li>
<li><a href="#ong">Oil & Gas</a></li>
<li><a href="#energy">Energy</a></li>
<li><a href="#infs">Infastructure</a></li>
<li><a href="#global">Global</a></li>
</ul>
<section id="news_style1_body" class="news_body"> 
<div class="tab_all" id="mining">
<?php get_template_part('page-projectsTabs-mining'); ?>
</div>
<div class="tab_all" id="ong">
<?php get_template_part('page-projectsTabs-ong'); ?>
</div>
<div class="tab_all" id="energy">
<?php get_template_part('page-projectsTabs-energy'); ?>
</div>
<div class="tab_all" id="infs">
<?php get_template_part('page-projectsTabs-infs'); ?>
</div>
<div class="tab_all" id="global">
<?php get_template_part('page-projectsTabs-glob'); ?>
</div>
</section>

这是带有类别的选项卡之一的示例

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args_mining = array(   'post_type'     => 'projects', 
'status'        => 'published', 
'category_name'     => 'Mining',
'posts_per_page'=> 4,
'orderby'   => 'post_date',
'order'         => 'DESC'
);
$get_mining = new WP_Query($args_mining);
if($get_mining->have_posts()){
while($get_mining->have_posts()) : $get_mining->the_post(); 
$image = wp_get_attachment_image(get_post_thumbnail_id($get_mining->ID),'home-feature');?>
<article>
<div class="pic"><a href="<?php the_permalink();?>" class="w_hover img-link img-wrap"><?php echo $image; ?><span class="link-gallery"></span> </a> </div>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<ul class="icons">
<li><a href="<?php the_permalink(); ?>" class="post_date"><?php echo get_the_time('d M, Y', $get_mining);?></a></li>
<li><a href="<?php the_permalink(); ?>" class="post_views"><?php echo get_post_meta(get_the_ID(),'views',true);?></a></li>
<li><a href="<?php the_permalink(); ?>" class="post_submitted"><?php echo get_post_meta(get_the_ID(),'Author',true);?></a></li>
<li><a href="" class="comments_count"></a></li>
</ul>
<div class="text"><?php echo get_excerpt(900,$get_mining); ?></div>
</article>
<?php endwhile;
}?>
<?php wp_reset_postdata(); ?>

任何帮助和建议都会很好。请注意,目前我有大约 5 个选项卡

编辑1:在我的函数中添加了我的分页功能.php

下面是在我的函数中找到的分页代码.php

function custom_pagination($numpages = '', $pagerange = '', $paged='') {
if (empty($pagerange)) {
$pagerange = 2;
}
global $paged;
if (empty($paged)) {
$paged = 1;
}
if ($numpages == '') {
global $wp_query;
$numpages = $wp_query->max_num_pages;
if(!$numpages) {
$numpages = 1;
}
}
//Check page number and store $pageUp and $pageDown appropriately
if($paged == '1'){
$pageDown = $paged + 1;
$pageUp = $paged +2;
$prev = get_previous_posts_page_link($pageDown);
$next = get_next_posts_page_link($pageUp);

}
elseif(($paged >= 2)&&(!$paged==$numpages)){
$pageDown = $paged -1;
$pagedUp = $paged +1;
$prev = get_previous_posts_page_link();
$next = get_next_posts_page_link();
}
elseif($paged == $numpages){
$pageDown = $paged -2;
$pageUp = $paged -1;
$prev = get_previous_posts_page_link($pageDown);
$next = get_next_posts_page_link($pageUp);
}  

$pagination_args = array(
'base'            => get_pagenum_link(1) . '%_%',
'format'          => 'page/%#%',
'total'           => $numpages,
'current'         => $paged,
'show_all'        => False,
'end_size'        => 1,
'mid_size'        => $pagerange,
'prev_next'       => False,
'prev_text'       => __('&laquo;'),
'next_text'       => __('&raquo;'),
'type'            => 'plain',
'add_args'        => false,
'add_fragment'    => ''
);
$paginate_links = paginate_links($pagination_args);
if ($paginate_links) {
echo '<div id ="nav_pages">'; 
echo '<div class="prev_first"></div>'; 
//echo '   <a href="'.$paginate_links.'" class="next">Next</a>';
echo '<div class="pages"';
echo'<ul>';
if($paged==1){      
$pageDown = $paged + 1;
$pageUp = $paged +2;
$prev = get_next_posts_page_link();
$next = get_next_posts_page_link();
echo' <li class="current"><a href="" title="">'.$paged.'</a></li>';
echo'<li><a href="'.$prev.'" title="'.$prev.'">'.$pageDown.'</a></li>';
//echo'<li><a href="'.$next.'" title="'.$next.'">'.$pageUp.'</a></li>';
}
elseif(($paged >= 2)&&($paged!=$numpages)){
$pageDown = $paged -1;
$pageUp = $paged +1;
$prev = get_previous_posts_page_link();
$next = get_next_posts_page_link();
echo'<li><a href="'.$prev.'" title="'.$prev.'">'.$pageDown.'</a></li>';
echo' <li class="current"><a href="" title="">'.$paged.'</a></li>';
echo'<li><a href="'.$next.'" title="">'.$pageUp.'</a></li>';
}
elseif($paged==$numpages){
$pageDown = $paged -2;
$pageUp = $paged -1;
$prev = get_previous_posts_page_link();
$next = get_next_posts_page_link();
echo'<li><a href="'.$prev.'" title="'.$prev.'">'.$pageUp.'</a></li>';
//echo'<li><a href="'.$next.'" title="'.$next.'">'.$pageUp.'</a></li>';
echo' <li class="current"><a href="" title="">'.$paged.'</a></li>';

}   
//echo $paginate_links;
echo '</ul>';
echo '<div class="page_x_of_y">Page <span>' . $paged . '</span> of <span>' . $numpages . '</span></div> ';
echo '</div>';
} 
}
//End of pagination

使用以下代码进行分页:

$paged1 = isset( $_GET['paged1'] ) ? (int) $_GET['paged1'] : 1;

并在查询中使用它,如下所示:

$args_mining = array(   'post_type'     => 'projects', 
'status'        => 'published', 
'category_name'     => 'Mining',
'posts_per_page'=> 4,
'orderby'   => 'post_date',
'order'         => 'DESC',
'paged'    => $paged1
);

然后对于分页,请在 endwhile 之后使用以下代码;

$pag_args1 = array(
'prev_text'    => __('<'),
'next_text'    => __('>'),
'show_all' => true,
'base'         => '' . $url . '?paged1=%#%',                
'format'  => '?paged1=%#%',
'current' => $paged1,
'total'   => $get_mining->max_num_pages); 
echo paginate_links( $pag_args1 );

注意:(使用$paged1$args_mining作为不同的变量,用于不同的分类查询(

最新更新