我发现这个出色的功能可以显示特定自定义分类下列出的所有帖子。它很棒。在这里找到http://gilbert.pellegrom.me/wordpress-list-posts-by-taxonomy我尝试了许多想法,但不成功,尝试对返回的数据进行分页。我要么没有数据,要么继续显示整个列表。我的一些分类法有超过10K的帖子。因此,分页似乎是合乎逻辑的。
我想做的是;让返回的信息创建'n'个帖子的页面并为其他页面建立链接(1,2,... 4,5等)。非常感谢任何帮助。
我在我的函数文件中抛出了这个;
function list_posts_by_taxonomy( $post_type, $taxonomy, $get_terms_args = array(),
$wp_query_args = array() ){
$tax_terms = get_terms( $taxonomy, $get_terms_args );
if( $tax_terms ){
foreach( $tax_terms as $tax_term ){
$query_args = array(
'post_type' => $post_type,
"$taxonomy" => $tax_term->slug,
'post_status' => 'publish',
'posts_per_page' => -1,
'ignore_sticky_posts' => true
);
$query_args = wp_parse_args( $wp_query_args, $query_args );
$my_query = new WP_Query( $query_args );
if( $my_query->have_posts() ) { ?>
<h2 id="<?php echo $tax_term->slug; ?>" class="title">
<?php echo $tax_term->name; ?></h2>
<ul>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"
title="Permanent Link to <?php the_title_attribute(); ?>">
<?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php
}
wp_reset_query();
}
}
}
?>
这段代码放在模板中,填写任何“分类法”名称并显示数据。另一个我不确定的问题,如果分页应该放在函数或模板中。
<div class="my_class">
<?php
list_posts_by_taxonomy( 'my_posttype', 'taxo_mytaxo' );
?>
</div>
谢谢大家!
答案 0 :(得分:1)
首先要对您的查询进行分页,您必须使用paged
参数
要获得一些额外信息,请查看Pagination
通常你会得到这样的分页变量:
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
然后通过将其包含在代码的查询参数中将其传递给查询:
$query_args = array(
'post_type' => $post_type,
"$taxonomy" => $tax_term->slug,
'post_status' => 'publish',
'posts_per_page' => -1,
'ignore_sticky_posts' => true
'paged' => $paged //I've added it here
);
然后你必须构建类似的分页链接(这将在循环中完成):
<!-- Add the pagination functions here. -->
<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>