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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

438閲覧

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

sekai11

総合スコア16

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/03/06 10:22

前提・実現したいこと

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

php

1<?php 2/* 3Template Name:制作実績一覧表 4*/ 5?> 6<?php get_header(); ?> 7<div class="kotei"> 8 <div id="main"> 9 <?php 10 if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } 11elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } 12else { $paged = 1; } 13global $post; 14$args = array( 15 'posts_per_page' => 2, 16 'post_type'=> 'seisaku', 17 'paged' => $paged, 18 19); 20$myposts = get_posts( $args ); 21foreach ( $myposts as $post ) : setup_postdata( $post ); ?> 22 23 <div class="container"> 24 <div class="row"> 25 <div class="col-md-4"> 26 <dl class='news'> 27 <h3 class='news-title'> 28 <?php the_title(); ?> 29 </h3> 30 <dd class='news-date'> 31 <i class="fa fa-clock-o"></i> 32 <?php the_date('Y.m.d'); ?> 33 </dd> 34 <dd class='news-content'> 35 <i class="fa fa-folder-open"></i> 36 <?php 37if ($terms = get_the_terms($post->ID, 'seisaku-cat')) { 38 foreach ( $terms as $term ) { 39 echo '<span>' . esc_html($term->name) . '</span>'; 40 } 41} 42?> 43 </dd> 44 <?php the_excerpt(); ?> 45 <p class="more"><a href="<?php the_permalink(); ?>">続きを読む<i class="fa fa-chevron-right"></i></a></p> 46 <?php if(has_post_thumbnail()): ?> 47 <p><a href="<?php the_permalink(); ?>"> 48 <?php the_post_thumbnail('medium'); ?></a></p> 49 <?php endif; ?> 50 51 </dl> 52 </div> 53 54 </div> 55 </div> 56 57 58 <?php 59endforeach; 60wp_reset_postdata(); 61?> 62 <div class="pagenav"> 63 <span class="old"> 64 <?php next_posts_link( '<i class="fa fa-chevron-circle-left"></i>古い記事' );?> 65 </span> 66 <span class="new"> 67 <?php previous_posts_link( '新しい記事<i class="fa fa-chevron-circle-right"></i>' );?> 68 </span> 69 </div> 70 </div> 71</div> 72 73<!--/#main --> 74<?php get_footer(); ?>

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

php

1 <?php 2 if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } 3elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } 4else { $paged = 1; } 5global $post; 6$args = array( 7 'posts_per_page' => 2, 8 'post_type'=> 'seisaku', 9 'paged' => $paged, 10 11); 12$myposts = get_posts( $args ); 13foreach ( $myposts as $post ) : setup_postdata( $post ); ?>

は、

php

1 <?php 2endforeach; 3wp_reset_postdata(); 4?>

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

php

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

見落としていたのですが、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 10:51

編集2019/03/07 07:10
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sekai11

2019/03/06 10:55

回答ありがとうございます。 <?php endforeach; <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> wp_reset_postdata(); ?> ということでしょうか? エラーが表示されました。 ちなみに、 <?php endforeach; wp_reset_postdata(); ?>の前に<div class="pagenav"> 〜 </div>を入れても表示されませんでした。。
CHERRY

2019/03/06 11:34 編集

php の開始、終了タグも正しくつけてくださいね。 php の中に html をそのまま記載するとエラーになりますので。 <?php endforeach; ?> <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> <?php wp_reset_postdata(); ?>
sekai11

2019/03/06 12:37

返信ありがとうございます。 早速入力しましたが、エラーは出ませんが表示されません。 ちなみにページのソース表示を見たら <div class="pagenav"> <span class="old"> </span> <span class="new"> </span> </div> </div> と丸々、中身が表示されていませんでした。 ローカル環境なので表示されないのでしょうか。 他の方法を実施した方がいいのでしょうか? 1日中格闘しています。 ご教示をよろしくお願いいたします。
CHERRY

2019/03/07 07:11

get_posts を使われているのを見落としていました。 長くなったので、回答欄を書き換えましたので、ご確認ください。
sekai11

2019/03/07 09:31

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問