12
<?php
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $loop = new WP_Query(
            array(
                'post_type' => 'html5-blank',
                'posts_per_page' => 5,
                'paged'=>$paged
            )
        );
?>
<?php if ($loop->have_posts()): while ($loop->have_posts()) : $loop->the_post(); ?>      
 //Loop Code Here..
 <?php wp_reset_query(); ?> 
   <nav>
        <?php previous_posts_link( 'Newer posts &raquo;' ); ?>
        <?php next_posts_link('Older &raquo;') ?>
    </nav>
<?php endwhile; ?>
<?php else: ?>

結果を入力したときの次のページのURLは次のとおりです。www.mywebsite.com/blog/ page/2は機能しています。しかし、ページネーションのリンクを表示することはできません。

どこがうまくいかなかったのですか?

編集:ページネーションリンクはpage/2/メインのブログページに表示されていますが、表示されていません。なんで?

4

5 に答える 5

22

カスタム投稿wp_queryを使用したページネーションについて提案する方法は3つあります。残念ながら、今日まで、これについての良い情報はあまりありません。少なくとも、場合によっては、そこに何があるのか​​がはっきりしていません。うまくいけば、これが役立ちます!

また、wp_reset_postdata()が間違った場所にあることに注意してください。ただし、正しく機能させるには、さらに多くのことが必要です。

オプション1-max_num_pages変数を使用

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array( 
        'posts_per_page' => 1, 
        'paged' => $paged, 
        'post_type' => 'cpt_type'
    );
    $cpt_query = new WP_Query($args);
?>

<?php if ($cpt_query->have_posts()) : while ($cpt_query->have_posts()) : $cpt_query->the_post(); ?>

    //Loop Code Here...

<?php endwhile; endif; ?>

<nav>
    <ul>
        <li><?php previous_posts_link( '&laquo; PREV', $cpt_query->max_num_pages) ?></li> 
        <li><?php next_posts_link( 'NEXT &raquo;', $cpt_query->max_num_pages) ?></li>
    </ul>
</nav>

上記のように、変数previous_posts_linknext_posts_linkアクセスするためのわずかに異なる形式が表示されます。max_num_pagesにアクセスするときは、必ず独自のクエリ変数名を使用してくださいmax_num_pages。$ cpt_queryを使用していることに注意してください。これは、クエリ例の変数です。

オプション2-ループクエリに一時的に$wp_query変数を使用する

これは多くの人が推奨することですが、$ wp_query変数を一時変数に割り当てて再割り当てするように注意してください。そうしないと、あらゆる種類の問題が発生します。そのため、オプション#1をお勧めします。CSSトリックに記載されているように、次のようなことができます。

<?php 
  $temp = $wp_query; 
  $wp_query = null; 
  $wp_query = new WP_Query(); 
  $wp_query->query('showposts=6&post_type=news'.'&paged='.$paged); 

  while ($wp_query->have_posts()) : $wp_query->the_post(); 
?>

  <!-- LOOP: Usual Post Template Stuff Here-->

<?php endwhile; ?>

<nav>
    <?php previous_posts_link('&laquo; Newer') ?>
    <?php next_posts_link('Older &raquo;') ?>
</nav>

<?php 
  $wp_query = null; 
  $wp_query = $temp;  // Reset
?>

オプション3-WP-pagenaviプラグインを使用

代わりにできる別のオプションと同じように、WP-pagenaviプラグインを使用し、オプション#1のようにクエリを設定します。ただし、プラグインをインストールしたら、コードに1つの変更を加え、要素内のすべてを削除して、この関数に置き換えます。したがって、次のように終了します。

<nav>
    <?php wp_pagenavi( array( 'query' => $cpt_query ) ); ?>
</nav>
于 2013-08-20T00:13:18.143 に答える
3

私はあなたが<?php wp_reset_query(); ?>間違った場所に置いたと思います..それはページネーションコードの次または後にあるべきではありませんか?

このようなもの

<?php endwhile; ?>
<?php else: ?>
<?php wp_reset_query(); ?>
于 2013-01-30T03:12:26.690 に答える
2

この質問は@Trevorによって非常に適切に回答されましたが、番号付きのページネーションを実装する必要があり、もう少し調査を行う必要がありました。私のコードが他の人が番号付きページネーションを実装するのに役立つことを願っています。

    <div class="frontpage-posts">
        <?php
        if (get_query_var('paged')) {
          $paged = get_query_var('paged');
        } elseif (get_query_var('page')) {
          $paged = get_query_var('page');
        } else {
          $paged = 1;
        }
        $temp = $wp_query;
        $wp_query = null;
        $wp_query = new WP_Query('posts_per_page=12&paged=' . $paged);
        if ($wp_query->have_posts()) :
          while ($wp_query->have_posts()) : $wp_query->the_post();
            echo the_title();
          endwhile; ?>
          <nav>
            <?php
            the_posts_pagination(array(
              'mid_size'  => 2,
              'prev_text' => __('Back', 'textdomain'),
              'next_text' => __('Onward', 'textdomain'),
            ));
            ?>
          </nav>
        <?php
          $wp_query = null;
          $wp_query = $temp;
          wp_reset_postdata();
        endif;
        ?>
      </div>
于 2020-07-09T13:07:44.370 に答える
0
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'post_type'     => 'wp-rest-api-log',
    'posts_per_page' => 5,
    'paged'         => $paged,
    'orderby'       => 'date',
);

$loop = new WP_Query( $args );

if ($loop->have_posts()) :
    while ($loop->have_posts()) : $loop->the_post();
      echo the_title();
    endwhile;
    
    echo "<nav class=\"sw-pagination\">";
    $big = 999999999; // need an unlikely integer
    echo paginate_links( array(
        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format' => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total' => $loop->max_num_pages
    ) );
    echo "</nav>";
endif;

wp_reset_query();
于 2021-01-14T15:45:30.130 に答える
-2
<?php    
add_shortcode('show_all_news', 'show_all_news');
    function show_all_news($atts) {
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $limit = 4;
        $offset = ( $limit * $paged ) - $limit;
        $atts['pages'] = $paged; 
        $atts['post-type'] = 'your_custom_post_type'; 
        $atts['orderby'] = 'date'; 
        $atts['order'] = 'DESC';
        $atts['offset'] = $offset; 
        $atts['posts_per_page'] = $limit; 
        $atts['caller_get_posts'] = 1; 

        $result = new WP_Query($atts);
        echo '<div class="news-cont">';  
        if($result->have_posts())
        {
            while ($result->have_posts()) : $result->the_post(); 
                echo '<div class="bg-white news-block">'; 
                echo '<em class="date">'. get_the_date().'</em>' ?>

                <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                <?php 
                echo "<p>";
                the_excerpt(); 
                echo "</p>";
                echo '</div>';
            endwhile;

            ?>
                <ul class="pagination" style="width:100%;">
                    <li id="previous-posts" style="float:left">
                        <?php previous_posts_link( '<< Vorige Pagina', $result->max_num_pages ); ?>
                    </li>
                    <li id="next-posts" style="float:right">
                        <?php next_posts_link( 'Volgende Pagina >>', $result->max_num_pages ); ?>
                    </li>
                </ul>
            <?php 

        }
        echo '</div>'; 
        wp_reset_query();
    }
于 2016-02-29T07:38:44.073 に答える