azej0127
@azej0127

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

2つのクエリを1つにまとめて一覧を取得し、ページネーションを正常に動作させたい

解決したいこと

Seamless Sticky Custom Post Typesを使用し固定表示を行い、一覧ページに固定表示した投稿とそれ以外の投稿の全件を取得し、1ページ12記事の表示のページネーションを正常に動作させたい。

発生している問題・エラー

固定表示した投稿とそれ以外の投稿それぞれのQueryを1つにまとめてページネーションに設定したが、'posts_per_page' => -1,を設定しているため1ページに全件表示され、ページネーションが正常に動作しない。
表示設定では1ページの最大投稿数は12に設定済み。

該当するソースコード

 <div class ="gallery-wrapper">
    <?php
        $term_object = get_queried_object(); // タームオブジェクトを取得
        $term_slug   = $term_object->slug; // タームスラッグ
        $paged = get_query_var('paged') ? get_query_var('paged') : 1;
        $sticky_args = [
            'posts_per_page' => -1,
            'order'          => 'DESC',
            'post_status'    => 'publish',
            'post_type'      => 'gallery',
            'paged' => $paged,
            'tax_query' => array(
                array(
                    'taxonomy' => 'gallery-cat',
                    'field' => 'slug',
                    'terms' => $term_slug,
                ),
            ),
            'post__in'       => get_option('sticky_posts')
        ];

        $args = [
            'posts_per_page' => -1,
            'order'          => 'DESC',
            'post_status'    => 'publish',
            'post_type'      => 'gallery',
            'paged' => $paged,
            'tax_query' => array(
                array(
                    'taxonomy' => 'gallery-cat',
                    'field' => 'slug',
                    'terms' => $term_slug,
                ),
            ),
            'post__not_in'   => get_option('sticky_posts')
        ];
						
        $sticky_query = new WP_Query($sticky_args); // 固定表示の記事を取得
        $the_query    = new WP_Query($args); // 固定表示以外の記事を取得
					
        $new_query = new WP_Query();
        $new_query->posts = array_merge( $sticky_query->posts, $the_query->posts );
        $new_query->post_count = $sticky_query->post_count + $the_query->post_count;
					
    ?>

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

            //ここにループ投稿

        <?php endwhile; ?>
        <?php endif; ?>
					
</div>

<div class ="page-nation">
    <?php
        if(function_exists('wp_pagenavi')):
            wp_pagenavi(array('query'=>$new_query));
        endif;
    ?>
</div>

自分で試したこと

'posts_per_page' => -1 を 'posts_per_page' => 12 に変更するとそれぞれの投稿が12投稿ずつ取得され1ページに24件の記事が表示される。
こちらの記事を参考にし、post_countを追加しましたが変化は見られませんでした。
https://ja.stackoverflow.com/questions/82485/%EF%BC%92%E3%81%A4%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92%E7%B5%90%E5%90%88%E3%81%95%E3%81%9B%E3%81%A6%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E9%96%A2%E9%80%A3%E8%A8%98%E4%BA%8B%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99

0

No Answers yet.

Your answer might help someone💌