• 解決済 senkegs

    (@senkegs)


    お世話になります。
    index.phpに投稿+カスタム投稿の記事の一覧を表示しています。
    ページャーを以下のように設定したのですが、2ページ、3ページをクリックしても1ページ目しか表示されません。

    <section class="main-contents-02 type-index">
              <div class="contents-child-02 container">
                <div class="row row-90">
    
                  <?php
                  if ( have_posts() ) :
    
                    if ( is_home() && ! is_front_page() ) : ?>
                        <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
                    <?php
                    endif;
    
                    /* Start the Loop */
                    $paged = ( get_query_var('paged')) ? get_query_var( 'paged' ) : 1;
    
                    $arg = array(
                        'posts_per_page' => 9,
                        'post_type' => array('post','experts','information'),
                        'meta_key' => 'number',
                        'orderby' => array(
                        'meta_value_num'=>'ASC',
                        'date'=>'DESC',
                        'paged'=>$paged
                        )
                      );
    
                    $query = new WP_Query($arg);
    
                    while ( $query->have_posts() ) : $query->the_post();
    
                      get_template_part( 'template-parts/content', get_post_format() );
    
                    endwhile; ?>
    
                </div><!-- row -->
    
                <div class="center-block text-center pagination">
    
                <?php global $wp_rewrite;
                $paginate_base = get_pagenum_link(1);
                if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
    
                    $paginate_format = '';
                    $paginate_base = add_query_arg('paged', '%#%');
    
                } else {
    
                    $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') .
                    user_trailingslashit('page/%#%/', 'paged');;
                    $paginate_base .= '%_%';
    
                }
    
                echo paginate_links( array(
    
                    'base' => $paginate_base,
                    'format' => $paginate_format,
                    'total' => $query->max_num_pages,
                    'mid_size' => 5,
                    'current' => ($paged ? $paged : 1),
                    'prev_text' => '«',
                    'next_text' => '»',
                    'type' => 'list'
                ));
    
                ?></div><!-- pager -->
    
            <?php wp_reset_query();
    
            else :
    
              get_template_part( 'template-parts/content', 'none' );?>
              </div><!-- row -->
    
            <?php endif; ?>
    
            </div><!-- contents-child-02 -->
          </section>

    パーマリンクはカスタム構造で
    /%post_id%
    にしていますが、基本の設定にしても変化ありませんでした。
    表示設定では、フロントページの表示を最新の投稿に、1ページに表示する最大投稿数を9にしています。

    一応、ページャーをクリックすると
    ドメイン名/page/2
    に推移するのですが、原因が分からず…すみませんがご教授願えれば幸いです。
    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • $arg の paged パラメータが、orderby の array の中に含まれてしまっているように思われます。

    トピック投稿者 senkegs

    (@senkegs)

    そういうことだったのですね…
    原因が分からなかったので、大変助かりました。

    $argを以下に変更したら実装することができました。
    ありがとうございます!

    $arg = array(
        'posts_per_page' => 9,
        'post_type' => array('post','experts','information'),
        'meta_key' => 'number',
        'orderby' => array(
          'meta_value_num'=>'ASC',
          'date'=>'DESC'
        )
        'paged'=>$paged
      );
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「投稿とカスタム投稿タイプでのページャーの実装について」には新たに返信することはできません。