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

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

ただいまの
回答率

89.98%

アーカイブページ、過去の記事について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 334

sekai11

score 10

前提・実現したいこと

固定ページにて<?php/*Template Name:制作実績一覧表*/?>を作り(archive-seisaku.phpで)、制作実績一覧表を表示しているのですが、次のページへのリンクが表示されません。どこが悪いのか教えていただけないでしょうか。
archive-seisaku.php

<?php
/*
Template Name:制作実績一覧表
*/
?>
<?php get_header(); ?>
<div class="kotei">
    <div id="main">
        <?php
        if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
global $post;
$args = array(
    'posts_per_page' => 2,
    'post_type'=> 'seisaku',
    'paged' => $paged,

);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>

        <div class="container">
            <div class="row">
                <div class="col-md-4">
                    <dl class='news'>
                        <h3 class='news-title'>
                            <?php the_title(); ?>
                        </h3>
                        <dd class='news-date'>
                            <i class="fa fa-clock-o"></i>
                            <?php the_date('Y.m.d'); ?>
                        </dd>
                        <dd class='news-content'>
                            <i class="fa fa-folder-open"></i>
                            <?php
if ($terms = get_the_terms($post->ID, 'seisaku-cat')) {
    foreach ( $terms as $term ) {
        echo '<span>' . esc_html($term->name) . '</span>';
    }
}
?>
                        </dd>
                        <?php the_excerpt(); ?>
                        <p class="more"><a href="<?php the_permalink(); ?>">続きを読む<i class="fa fa-chevron-right"></i></a></p>
                        <?php if(has_post_thumbnail()): ?>
                        <p><a href="<?php the_permalink(); ?>">
                                <?php the_post_thumbnail('medium'); ?></a></p>
                        <?php endif; ?>

                    </dl>
                </div>

            </div>
        </div>


        <?php
endforeach;
wp_reset_postdata();
?>
        <div class="pagenav">
            <span class="old">
                <?php next_posts_link( '<i class="fa fa-chevron-circle-left"></i>古い記事' );?>
            </span>
            <span class="new">
                <?php previous_posts_link( '新しい記事<i class="fa fa-chevron-circle-right"></i>' );?>
            </span>
        </div>
    </div>
</div>

<!--/#main -->
<?php get_footer(); ?>

post_typeはseisakuです。次のページへのリンクが表示されません。なお、archive-seisaku.phpの中の

        <?php
        if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }
global $post;
$args = array(
    'posts_per_page' => 2,
    'post_type'=> 'seisaku',
    'paged' => $paged,

);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>

は、

        <?php
endforeach;
wp_reset_postdata();
?>


ですべてを終わらしているということでしたので、

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

を入力しましたが、表示したい内容(写真や、題名)にカスタム投稿内容が表示されないという現象が起きました。
archive-seisaku.phpと入力してもカスタム投稿タイプを読み込んでくれません。

どのようにすれば、カスタム投稿タイプを表示し、次のページを表示してくれるのでしょうか。できる限りプラグインを使わず実装しようとしています。よろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

見落としていたのですが、get_posts をお使いなんですね。

get_posts は、WP_Post オブジェクト(コンテンツのみ)を返すので、ページ情報が取れないですね。 (  クラスリファレンス/WP_Post  参照。 ) 
WP_Query オブジェクトを返す WP_Query() を使ってください。

プログラム的には、 get_posts() 部分を WP_Query() を使うように書き換えて、next_posts_link の第2パラメータに WP_Query の max_num_pages を与えるようにしてください。

関数リファレンス/WP_Query
テンプレートタグ/next_posts_link#WP_Query でループさせたとき

元々のテンプレートのget_post() より後をとりあえずこんな感じでしょうか:

$myposts = new WP_Query( $args );
if ( $myposts->have_posts() ):
    while( $myposts->have_posts() ):
        $myposts->the_post();   ?>

        <div class="container">
(変更ないので省略)
        </div>

        <?php  endwhile; ?>

        <div class="pagenav">
            <span class="old">
                <?php next_posts_link( '<i class="fa fa-chevron-circle-left"></i>古い記事', $myposts->max_num_pages );?>
            </span>
            <span class="new">
                <?php previous_posts_link( '新しい記事<i class="fa fa-chevron-circle-right"></i>' );?>
            </span>
        </div>

    <?php wp_reset_postdata();
    endif; ?>

    </div>
</div>

<!--/#main -->
(以下省略)

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/03/06 21:37

    返信ありがとうございます。
    早速入力しましたが、エラーは出ませんが表示されません。
    ちなみにページのソース表示を見たら
    <div class="pagenav">
    <span class="old">
    </span>
    <span class="new">
    </span>
    </div>


    </div>
    と丸々、中身が表示されていませんでした。

    ローカル環境なので表示されないのでしょうか。
    他の方法を実施した方がいいのでしょうか?
    1日中格闘しています。

    ご教示をよろしくお願いいたします。

    キャンセル

  • 2019/03/07 16:11

    get_posts を使われているのを見落としていました。

    長くなったので、回答欄を書き換えましたので、ご確認ください。

    キャンセル

  • 2019/03/07 18:31

    CHERRY様

    ありがとうございます!!
    出来ました!!
    ずっと格闘していて、実現できず本当に苦労していました。

    CHERRY様は、救世主です!!
    本当にありがとうございました!!

    キャンセル

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

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