我使用了代码段来构建自定义分页:
<?php
if ( ! function_exists( 'procare_paging_nav' ) ) :
/**
* Display navigation to next/previous set of posts when applicable.
*
* @return void
*/
function procare_paging_nav() {
// Don't print empty markup if there's only one page.
if ( $GLOBALS['wp_query']->max_num_pages < 2 ) {
return;
}
$paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
$pagenum_link = html_entity_decode( get_pagenum_link() );
$query_args = array();
$url_parts = explode( '?', $pagenum_link );
if ( isset( $url_parts[1] ) ) {
wp_parse_str( $url_parts[1], $query_args );
}
$pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );
$pagenum_link = trailingslashit( $pagenum_link ) . '%_%';
$format = $GLOBALS['wp_rewrite']->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
$format .= $GLOBALS['wp_rewrite']->using_permalinks() ? user_trailingslashit( 'page/%#%', 'paged' ) : '?paged=%#%';
// Set up paginated links.
$links = paginate_links( array(
'base' => $pagenum_link,
'format' => $format,
'total' => $GLOBALS['wp_query']->max_num_pages,
'current' => $paged,
'mid_size' => 2,
'add_args' => array_map( 'urlencode', $query_args ),
'prev_text' => '<i class="fa fa-chevron-left"></i>',
'next_text' => '<i class="fa fa-chevron-right"></i>',
'type' => 'list',
) );
if ( $links ) :
?>
<nav class="navigation paging-navigation" role="navigation">
<?php echo $links; ?>
</nav><!-- .navigation -->
<?php
endif;
}
endif;
?>
我将这个功能用于博客帖子,并为home.php页面出现了分页。 但是分页没有出现在我的自定义帖子类型页面上。 我创建了一个名为'ervaringen'的自定义帖子类型。
在我的页面中 - ervaringen.php:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$partnersLoop = new WP_Query( array( 'post_type' => 'ervaringen', 'orderby' => 'post_id', 'posts_per_page' => 10, 'paged' => $paged ) );
while( $partnersLoop->have_posts() ): $partnersLoop->the_post();
?>
<div class="post press-photo">
<div class="image">
<?php the_post_thumbnail(); ?>
</div><!-- image -->
<div class="content">
<h5><?php the_title(); ?></h5>
<p><?php the_excerpt(); ?></p>
</div><!-- content -->
</div><!-- .press-photo -->
<?php endwhile; ?>
<?php procare_paging_nav(); ?>
<?php wp_reset_query(); ?>
所以,如果有人能通过告诉我做错了什么来帮助我,那我就错过了自定义帖子页面上的分页。
我尝试过哪些其他解决方案并且对我无效:
更改函数以将自定义查询作为参数传递,而不是使用全局查询。
<?php
if ( ! function_exists( 'procare_paging_nav' ) ) :
function procare_paging_nav($partnersLoop) {
// Don't print empty markup if there's only one page.
if ( $partnersLoop->max_num_pages < 2 ) {
return;
}
$paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' )
$pagenum_link = html_entity_decode( get_pagenum_link() );
$query_args = array();
$url_parts = explode( '?', $pagenum_link );
if ( isset( $url_parts[1] ) ) {
wp_parse_str( $url_parts[1], $query_args );
}
$pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );
$pagenum_link = trailingslashit( $pagenum_link ) . '%_%';
$format = $GLOBALS['wp_rewrite']->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
$format .= $GLOBALS['wp_rewrite']->using_permalinks() ? user_trailingslashit( 'page/%#%', 'paged' ) : '?paged=%#%';
// Set up paginated links.
$links = paginate_links( array(
'base' => $pagenum_link,
'format' => $format,
'total' => $partnersLoop->max_num_pages,
'current' => $paged,
'mid_size' => 2,
'add_args' => array_map( 'urlencode', $query_args ),
'prev_text' => '<i class="fa fa-chevron-left"></i>',
'next_text' => '<i class="fa fa-chevron-right"></i>',
'type' => 'list',
) );
if ( $links ) :
?>
<nav class="navigation paging-navigation" role="navigation">
<?php echo $links; ?>
</nav><!-- .navigation -->
<?php
endif;
}
endif;
?>
并在页面中 - ervaringen.php
procare_paging_nav($partnersLoop);
感谢您的时间。
答案 0 :(得分:0)
解决方案是将自定义查询作为参数传递,而不是使用全局查询。
我之前也尝试过这个解决方案,但没有得到结果,因为我没有用自定义的替换链接部分中的全局查询。
从@lucas
获得一些帮助后解决了这个问题感谢。
这是解决方案。如果它可能在将来帮助某人。
在页面中 - ervaringen.php
procare_paging_nav($partnersLoop);
自定义分页功能:
<?php
if ( ! function_exists( 'procare_paging_nav' ) ) :
/**
* Display navigation to next/previous set of posts when applicable.
*
* @return void
*/
function procare_paging_nav($partnersLoop) {
// Don't print empty markup if there's only one page.
if ( $partnersLoop->max_num_pages < 2 ) {
return;
}
$paged = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
$pagenum_link = html_entity_decode( get_pagenum_link() );
$query_args = array();
$url_parts = explode( '?', $pagenum_link );
if ( isset( $url_parts[1] ) ) {
wp_parse_str( $url_parts[1], $query_args );
}
$pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );
$pagenum_link = trailingslashit( $pagenum_link ) . '%_%';
$format = $GLOBALS['wp_rewrite']->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
$format .= $GLOBALS['wp_rewrite']->using_permalinks() ? user_trailingslashit( 'page/%#%', 'paged' ) : '?paged=%#%';
// Set up paginated links.
$links = paginate_links( array(
'base' => $pagenum_link,
'format' => $format,
'total' => $partnersLoop->max_num_pages,
'current' => $paged,
'mid_size' => 2,
'add_args' => array_map( 'urlencode', $query_args ),
'prev_text' => '<i class="fa fa-chevron-left"></i>',
'next_text' => '<i class="fa fa-chevron-right"></i>',
'type' => 'list',
) );
if ( $links ) :
?>
<nav class="navigation paging-navigation" role="navigation">
<?php echo $links; ?>
</nav><!-- .navigation -->
<?php
endif;
}
endif;
?>