takopitto
@takopitto

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!

新着一覧記事で、ページネーションを作成したい

解決したいこと

カスタム投稿タイプで作成した新着一覧記事で、ページネーションを作成したいと思っております。

下記のサイトに倣って作成してみたのですが、ページネーションのリンクをクリックしても、次のページに飛ばずトップページに戻ってしまいます…。
https://deep-space.blue/web/1695

一度 'post_type'の種類を1つに設定してみると、ページネーションがうまく機能したのですが、複数設定した途端機能しなくなってしまいます。
コードのどこに問題点があるか、ご教示いただけますと大変有難く存じます。

また、作成したコードも下記に記載いたしますので、もしお時間がございましたらご確認いただけますと大変有難く存じます。m(__)m

html

 <section class="l-all-archive p-all-archive">
        <div class="p-all-archive__inner inner">
            <!-- ボタン -->
            <ul class="p-all-archive__menu">
                <li class="p-all-archive__button">
                    <a href="<?php echo get_post_type_archive_link('all'); ?>">
                        <label for="">
                            <input type="radio" name="fruits" value="1" id="all" checked>
                            すべて
                        </label>
                    </a>
                </li>

                <li class="p-all-archive__button">
                    <a href="<?php echo get_post_type_archive_link('news'); ?>">

                        <label for="">
                            <input type="radio" name="fruits" value="1" id="news">
                            お知らせ一覧
                        </label>
                    </a>
                </li>

                <li class="p-all-archive__button">
                    <a href="<?php echo get_post_type_archive_link('event'); ?>">

                        <label for="">
                            <input type="radio" name="fruits" value="1" id="news">
                            イベント
                        </label>
                    </a>
                </li>

                <li class="p-all-archive__button">
                    <a href="<?php echo get_post_type_archive_link('houryu'); ?>">

                        <label for="">
                            <input type="radio" name="fruits" value="1" id="news">
                            放流情報
                        </label>
                    </a>
                </li>

                <li class="p-all-archive__button">
                    <a href="<?php echo get_post_type_archive_link('chouka'); ?>">

                        <label for="">
                            <input type="radio" name="fruits" value="1" id="news">
                            釣果情報
                        </label>
                    </a>
                </li>

            </ul><!-- .tab-menu -->

            <!-- 内容 -->
            <div class="p-all-archive__content">

                <!-- ページネーション -->
                <div class="pagination">
                    <div class="p-all-archive__items">

                        <?php
                        $wp_query = new WP_Query();
                        $my_posts = array(
                            'post_type' => array('news', 'event', 'houryu', 'chouka'),
                            'posts_per_page' => '15',
                            'post_status' => 'publish',
                            'paged' => $paged,
                            'orderby'     => 'date',
                            'order' => 'DESC'
                        );

                        // ループさせるコンテンツ 
                        $wp_query->query($my_posts);
                        if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post();
                                $obj = get_post_type_object($post->post_type); //投稿タイプ情報を取得
                        ?>


                                <!-- 条件分岐 偶数奇数で色を変える-->
                                <?php if (($wp_query->current_post + 1) % 2 == 0) :
                                    $class = 'p-all-archive__item-white';
                                else :
                                    $class = 'p-all-archive__item';
                                endif; ?>


                                <!-- ループコンテンツ -->
                                <a class="p-all-archive__link" href="<?php the_permalink(); ?>">
                                    <div class="p-all-archive__contents">
                                        <div class="<?php echo $class; ?>">
                                            <div class="p-all-archive__text">
                                                <dl class="p-all-archive__text-items">
                                                    <dt class="p-all-archive__text-item">
                                                        <span class="p-all-archive__date"><?php the_time('Y/m/d'); ?></span>
                                                        <span class="p-all-archive__archive">
                                                            <?php
                                                            $post_type = get_post_type(); //投稿タイプ名(スラッグ)の取得
                                                            $post_type_object = get_post_type_object($post_type); //投稿タイプの情報を取得
                                                            echo $post_type_object->labels->singular_name; //単数形のラベル
                                                            ?>
                                                        </span>
                                                    </dt>
                                                    <dd class="p-all-archive__title">
                                                        <?php
                                                        if (mb_strlen($post->post_title) > 20) {
                                                            $title = mb_substr($post->post_title, 0, 20);
                                                            echo $title . '...';
                                                        } else {
                                                            echo $post->post_title;
                                                        }
                                                        ?>
                                                    </dd>
                                                </dl>
                                            </div>

                                            <!-- アイッキャッチ -->
                                            <div class="p-all-archive__img">
                                                <?php if (has_post_thumbnail()) : ?>
                                                    <?php the_post_thumbnail(); ?>
                                                <?php else : ?>

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

                                <!-- ここまでループさせる内容 -->


                        <?php endwhile;
                        endif;
                        wp_reset_postdata(); ?>
                        <!-- ここまでループコンテンツ-->
                    </div>

                    <!-- ここから ページネーション続き  -->
                    <div class="archive-all-pagination">

                        <?php wp_pagination(); //ページネーション 
                        ?>
                    </div>


                </div>

            </div>
        </div>
    </section>

functions.php

// 新着一覧のページネーション表示
function wp_pagination()
{
  global $wp_query;
  $big = 999999999;
  echo paginate_links(array(
    'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
    'format' => '?paged=%#%',
    'current' => max(1, get_query_var('paged')),

    'total' => $wp_query->max_num_pages,
    'prev_text' => '←',
    'next_text' => '→',
  ));
}
add_action('init', 'wp_pagination');

コーディング初心者のため、分かりづらい上に初歩的な質問となってしまい申し訳ありません。
どなたか、ご教示いただけますと大変ありがたく存じます。
どうぞよろしくお願いいたします。m(__)m

0

1Answer

Comments

  1. @takopitto

    Questioner

    makkie様

    お返事が遅れてしまいましたm(__)m
    この度は、ご丁寧に回答いただきまして誠にありがとうございます!

    なるほど、ページネーション表示の方法はたくさんあるのですね。
    もっとしっかりと調べてみるべきでした…。

    教えていただいた方法だと簡単に表示できそうですので、試してみたいと思います!
    ご親切に回答いただいたおかげで、とても助かりました(#^^#)
    心より感謝申し上げます。

    今後も何かと質問させていただくかと思いますが、その際はどうぞよろしくお願いいたします。m(__)m
  2. ネット上の情報だと、いくら更新日が新しくても、古いコードを使っていると言うのが多々ある(公式では既に非推奨とされているコードを平気で載せているサイトもある)ので、Wordpress Codexで調べると言う選択肢もあると良いと思います。
    私の場合は、やりたいことを検索して、出てきたサイトで違うアプローチをしているサイトを見て、そこで使われている関数をCodexで調べるというやり方をしています。


    せっかく公式の新しい情報が掲載されているので、Codexをぜひ活用して、頑張ってください。
  3. @takopitto

    Questioner

    makkie様

    ご丁寧にご返信いただきまして、心より感謝申し上げます(#^^#)

    >私の場合は、やりたいことを検索して、出てきたサイトで違うアプローチをしているサイトを見て、そこで使われている関数をCodexで調べるというやり方をしています。

    →大変参考になる情報をご教示いただき、ありがとうございます!

    Wordpress Codexは勝手に難しいイメージを抱いており、今まで参考にすることはほとんどありませんでした(^^;)反省です。もしかすると、今まで古いコードや、間違ったコードを参考にしていたかもしれません…。

    makkie様のアドバイスのおかげで、最新かつ正確な情報を元にコーディングすることの大切さを学ぶことができました。心より感謝申し上げます。

    Wordpress Codexをしっかりと調べつつ、いただいたアドバイスを参考にしながら今後も頑張ります!ありがとうございました(#^^#)

Your answer might help someone💌