自定义分页不显示自定义帖子类型页面

时间:2016-04-29 05:16:16

标签: wordpress pagination

我使用了代码段来构建自定义分页:

<?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);

感谢您的时间。

1 个答案:

答案 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;
?>