質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.52%

カスタム投稿アーカイブページでのページングが動作しません(1ページ目と同じ)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,213

marcos_grohl

score 8

Wordpress テーマHabakiriで子テーマを作って制作しています。
Advanced Custom Fieldsを使って、eventsという「イベント情報」を表示するページを
アーカイブページで作り、一覧表示まではできました。

ですが、テーマ標準のページングですと
2ページ目が1ページ目と同じになってしまいます。

 試したこと

・アーカイブページでの記事取得数と
WP管理画面でのブログ表示数を揃えました。

・ページング機能自体は通常のカテゴリ一覧ページでは有効でした。

・似たようなケースの解決方法が無いか、
ネットで【wordpress 2ページ目 同じ】や
【カスタム投稿 2ページ目 同じ】で出てくる方法は
一通り試してみました。

 補足情報(FW/ツールのバージョンなど)

子テーマのイベントアーカイブページ(archive-events.php)のテンプレートの中身です。

<?php
/**
 * Version    : 1.3.0
 * Author     : inc2734
 * Author URI : http://2inc.org
 * Created    : April 20, 2015
 * Modified   : November 7, 2015
 * License    : GPLv2 or later
 * License URI: license.txt
 */
?>
<?php get_header(); ?>

<?php get_template_part( 'modules/page-header' ); ?>
<div id="blogtop" class="sub-page-contents">
<div class="col-xs-12">
        <h2 class="text-center" style="border:none;"><img src="<?php bloginfo('stylesheet_directory'); ?>/img/top/01_title-event.png" alt="イベント"></h2>
</div>
<div class="container">
    <div class="row">
        <div class="col-xs-9">
            <main id="main" role="main">
            <article class="article article--archive">
                <div class="entry">
                    <?php do_action( 'habakiri_before_entries' ); ?>
                    <div class="entries entries--archive">
                            <section id="top">
                            <div class="container-fluid">
                                <div class="row">
                                    <div class="col-xs-12 co-3m">
                                    <?php
                                          $args = array(
                                            'post_type' => array('events'),
                                              );

                                          $the_query = new WP_Query( $args );

                                          ?>
                                          <?php
                                          if ( $the_query->have_posts() ) :
                                          while ( $the_query->have_posts() ) : $the_query->the_post();
                                          ?>
                                        <div class="col-xs-12 co-3p ent-item">
                                        <div class="col-xs-4 top_event">
                                              <a href="<?php the_permalink(); ?>">
                                              <div class="image_wrap">
                                                  <?php if ( has_post_thumbnail() ) {
                                                        the_post_thumbnail("top-event_img");
                                                        }
                                                        else{
                                                        echo ('<img src="'.get_template_directory_uri().'/img/common/nothumbnail.png" alt="サムネイルがありません。">');
                                                        }
                                                  ?>
                                                </div></a>
                                        </div>
                                        <div class="col-xs-8 event_eventWrap2">
                                                    <p class="cat">カテゴリー:<?php echo get_the_term_list($post->ID,'events_cats'); ?></p>
                                                      <a href="<?php the_permalink(); ?>"><p><?php the_title(); ?></p></a>
                                                      <span class="data"><?php $field = the_field("data"); ?></span>
                                                      <div class="description"><?php $field = the_field("event-description"); ?></div>
                                        </div>
                                        </div>
                                        <?php
                                          endwhile;
                                          endif;
                                          wp_reset_postdata();
                                        ?>
                                        </div>
                                    </div>
                                </div>
                        </section>
                    <!-- end .entries --></div>
                    <?php do_action( 'habakiri_after_entries' ); ?>

                    <?php get_template_part( 'modules/pagination' ); ?>
                <!-- end .entry --></div>
            </article>
                    <!-- end #main --></main>
        <!-- end .col-md-9 --></div>
        <div class="col-md-3">
            <?php get_sidebar('events'); ?>
        </div>
    <!-- end .row --></div>
<!-- end .container --></div>

<!-- end .sub-page-contents --></div>

<?php get_footer(); ?>

続いて、親テーマにあるページング
(<?php get_template_part( 'modules/pagination' ); ?>)の中身になります。

<?php
/**
 * Version    : 1.0.1
 * Author     : inc2734
 * Author URI : http://2inc.org
 * Created    : September 9, 2015
 * Modified   : December 9, 2015
 * License    : GPLv2 or later
 * License URI: license.txt
 */

global $wp_rewrite;
global $wp_query;
global $paged;

$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 .= '%_%';
}

$paginate_links = paginate_links( array(
    'base'      => $paginate_base,
    'format'    => $paginate_format,
    'total'     => $wp_query->max_num_pages,
    'mid_size'  => 5,
    'current'   => ( $paged ? $paged : 1 ),
    'prev_text' => '&lt;',
    'next_text' => '&gt;',
    'type'      => 'array',
) );

if ( !$paginate_links ) {
    return;
}
?>
<nav class="pagination-wrapper">
    <ul class="pagination">
        <?php foreach ( $paginate_links as $link ) : ?>
        <li><?php echo $link; ?></li>
        <?php endforeach; ?>
    </ul>
</nav>

お手数をおかけいたしますが、
何卒よろしくお願い致します。。。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2018/10/09 11:48

    (質問文は編集できます)質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。

    キャンセル

  • marcos_grohl

    2018/10/09 12:06

    初めて使用したもので、ご指摘ありがとうございます。

    キャンセル

回答 1

checkベストアンサー

+1

アーカイブテンプレートでわざわざメインループを $the_query = new WP_Query( $args ); とする必要がありません。

if ( have_posts() ) : while ( have_posts() ) : the_post();
    /* これでよい */
endwhile; endif;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/09 14:54

    あっさりと解決しました!ありがとうございます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる