1

まず第一に、私は Google、StackExchange、Codex をあちこち調べましたが、まだ問題を解決できません。簡単かもしれません。わかりません。カスタム投稿を一覧表示する次の関数があります。ページには複数のクエリがありますが、ページネーションを利用しているのは 1 つ (このクエリ) だけです。これはフロントページにあります - これは静的に設定されています。

関数は次のとおりです。

function wight_listings()
{
    global $wp_query;
    global $page;

    $backup = $wp_query;
    $wp_query = NULL;
    $cur_page = $page; //get_query_var('page') ? get_query_var('page') : 1;

    $args = array(
            'post_type' => array('wight_listing'),
            'posts_per_page' => 7,
            'paged'=>$cur_page
        );
    $wp_query = new WP_Query($args);
    ?>
    <?php if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
        .
        .
        .
    <?php endwhile; ?>
        <div id="nav-posts" style="margin-top: .5em;">
            <div style="float:left;"><?php previous_posts_link('Previous Listings &laquo;'); ?></div>
            <div style="float:right;"><?php next_posts_link('&raquo; Next Listings'); ?></div>
            <div class="clear"></div>
        </div>
<?php  else: ?>
    <p>Oh no! There's nothing to show. :(</p>
<?php endif; ?>
<?php
    $wp_query = NULL;
    $wp_query = $backup;
}

「次のリスト」リンクは、現在のページに関係なく 2 ページにのみリンクして表示され、「前のリスト」リンクは表示されません。

私は何を間違っていますか?

WP: 3.5.2

4

1 に答える 1

1

解決策を見つけました。/wp-includes/link-template.php を調べたところ、謎の原因となっている 2 つの関数が見つかりました。それらを自分のテーマにコピーして少し変更したところ、すべてがうまく機能しました。

function wight_get_previous_posts_page_link($cur_page)
{
    if ( $cur_page > 1 )
    {
        $nextpage = intval($cur_page) - 1;
        if ( $nextpage < 1 )
            $nextpage = 1;
        return '<a href="' . get_pagenum_link($nextpage) . '">&laquo; Previous Listings</a>';
    }
}

function wight_get_next_posts_page_link($cur_page, $max_page)
{
    $paged = $cur_page;

    if ( !$paged )
        $paged = 1;
    $nextpage = intval($paged) + 1;

    if ( $max_page >= $nextpage )
        return '<a href="' . get_pagenum_link($nextpage) . '">Next Listings &raquo;</a>';

}

previous_posts_link と next_posts_link の代わりにそれらを使用しました。

<?php echo wight_get_previous_posts_page_link($cur_page); ?>
<?php echo wight_get_next_posts_page_link($cur_page, $query->max_num_pages); ?>
于 2013-07-12T22:37:15.620 に答える