我有一个名为“emp\\U案例研究”的自定义帖子类型,它有一个页面存档。以下是archive-emp\\U案例研究的代码。php:
<?php
$blog = $wp_query;
$wp_query= null;
$args= null;
$args = array(
\'post_type\' => \'emp_case-studies\'
);
$postsperpage = 5;
$offset = $paged == 0 ? 0 : ($paged-1)*$postsperpage;
$paging = array(
\'posts_per_page\' => $postsperpage,
\'offset\' => $offset
);
$ordering = array(
\'orderby\' => \'ID\',
\'order\' => \'DESC\'
);
$args = array_merge($args, $ordering, $paging);
$wp_query = new WP_Query($args);
?>
<?php
get_header();
get_template_part( \'include/content\', \'head\' );
?>
<div class="postcontent nobottommargin<?php if( semi_option( \'blog_sidebar\' ) == \'left\' ) { echo \' col_last\'; } ?> clearfix">
<?php
if ( $wp_query->have_posts() ) :
?>
<div id="posts" class="small-posts clearfix">
<?php
while ( $wp_query->have_posts() ) : $wp_query->the_post();
?>
<div id="post-<?php $wp_query->ID; ?>" <?php post_class(\'entry clearfix\'); ?>>
<?php
get_template_part( \'include/blog/news/post\', \'standard\' );
?>
</div>
<?php
endwhile;
get_template_part( \'include/blog/navigation\' );
?></div><?php
else :
get_template_part( \'include/blog/error\' );
endif;
$wp_query = $temp;
?>
</div>
<?php
get_sidebar(\'casestudies\');
get_template_part( \'include/content\', \'foot\' );
get_footer();
?>
我花了很长时间才使分页正常工作,这样我就可以有:归档页:/case studies单页:/case studies/post title
使用自定义查询使我获得了大部分的方法。第1页和第2页的效果很好,但第3页之后的效果就不好了。我在官方WordPress论坛上发现了一个帖子,其中有人有同样的问题。通过将“设置>阅读>博客页面显示最多”更改为1,可以解决此问题。这对我也有用。我的自定义post-type归档页面上的所有分页都非常有效。
然而,这意味着现在我的博客和搜索结果页面每页只显示一篇文章。
有没有办法我可以将此更改为每页5篇帖子?
P、 我的主题包含此函数以提供分页。它用于博客和搜索结果页面。
function semi_pagination( $pages = \'\', $range = 4 ) {
$showitems = ($range * 2) + 1;
global $paged;
if( empty( $paged ) ) $paged = 1;
if( $pages == \'\' ) {
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages) {
$pages = 1;
}
}
if(1 != $pages) {
echo "<div class=\\"pagination pagination-centered clearfix nobottommargin topmargin\\" style=\\"font-size: 13px;\\"><ul>";
if( $paged > 2 && $paged > $range + 1 && $showitems < $pages ) echo "<li><a href=\'" . get_pagenum_link( 1 ) . "\'>⇐</a></li>";
if( $paged > 1 && $showitems < $pages ) echo "<li><a href=\'" . get_pagenum_link( $paged - 1 ) . "\'>«</a></li>";
for ( $i = 1; $i <= $pages; $i++ ) {
if ( 1 != $pages && ( !( $i >= $paged + $range + 1 || $i <= $paged - $range - 1 ) || $pages <= $showitems )) {
echo ( $paged == $i ) ? "<li><span class=\\"active\\">" . $i . "</span></li>" : "<li><a href=\'" . get_pagenum_link( $i ) . "\'>" . $i . "</a></li>";
}
}
if ( $paged < $pages && $showitems < $pages ) echo "<li><a href=\\"" . get_pagenum_link( $paged + 1 ) . "\\">»</a></li>";
if ( $paged < $pages-1 && $paged + $range - 1 < $pages && $showitems < $pages ) echo "<li><a href=\'" . get_pagenum_link( $pages ) . "\'>⇒</a></li>";
echo "</ul></div>\\n";
}
}
最合适的回答,由SO网友:Chris 整理而成
感谢米洛为我指出pre\\u get\\u posts挂钩。这正是我所需要的。
以下是我的更新代码:
Archive page code
<?php
get_header();
get_template_part( \'include/content\', \'head\' );
?>
<div class="postcontent nobottommargin<?php if( semi_option( \'blog_sidebar\' ) == \'left\' ) { echo \' col_last\'; } ?> clearfix">
<?php
if ( have_posts() ) :
?>
<div id="posts" class="small-posts clearfix">
<?php
while ( have_posts() ) : the_post();
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(\'entry clearfix\'); ?>>
<?php
get_template_part( \'include/blog/casestudies/post\', \'standard\' );
?>
</div>
<?php
endwhile;
get_template_part( \'include/blog/navigation\' );
?></div><?php
else :
get_template_part( \'include/blog/error\' );
endif;
?>
</div>
<?php
get_sidebar(\'casestudies\');
get_template_part( \'include/content\', \'foot\' );
get_footer();
?>
然后我将此添加到
functions.php 来自法典
function hwl_home_pagesize( $query ) {
if ( is_post_type_archive( \'emp_case-studies\' ) ) {
$query->set( \'posts_per_page\', 5 );
return;
}
}
add_action( \'pre_get_posts\', \'hwl_home_pagesize\', 1 );