🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

Q&A

解決済

1回答

2577閲覧

WP「前の記事・後の記事」のページ送りでそれぞれの投稿日時を表示したい。

N_So

総合スコア1

WordPress

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

0グッド

0クリップ

投稿2021/02/14 22:32

前提・実現したいこと

Wordpressの投稿記事に関して。
「前の記事・後の記事」というページ送りを実装したい。
しかし、前の記事・後の記事が持っている「投稿日時」を表示することができません。

どなたか解決にご協力いただけないでしょうか。
宜しくお願い致します。

発生している問題・エラーメッセージ

「前の記事・後の記事」それぞれの投稿日時が表示できない。

該当のソースコード

<?php //前の記事を取得 $prev_post = get_previous_post(true); $next_post = get_next_post(true); if ( $prevPost = get_previous_post() ) {//前の記事があればリンクを出す echo '<a href="'.get_permalink($prevPost->ID).'">'; //前の記事のリンク echo '<div class="pager_img">'.get_the_post_thumbnail($prevPost->ID).'</div>'; //前の記事のサムネイル echo '<p>' . get_the_title($prevPost->ID) . '</p>'; //前の記事のタイトル echo the_time('Y/m/d'); //前の記事の投稿日時 echo get_the_excerpt($prevPost->ID); //次の記事の抜粋 echo '</a>'; categories_pre(); echo get_the_date($prevPost->ID); } ?> <?php //次の記事を取得 $prev_post = get_previous_post(true); $next_post = get_next_post(true); if ( $nextPost = get_next_post() ) { //次の記事があればリンクを出す echo '<a href="'.get_permalink($nextPost->ID).'">'; //次の記事のリンク echo '<div class="pager_img">'.get_the_post_thumbnail($nextPost->ID).'</div>'; //次の記事のサムネイル echo '<p>'.get_the_title($nextPost->ID).'</p>'; //次の記事のタイトル echo the_time('Y/m/d'); //次の記事の投稿日時 echo get_the_excerpt($nextPost->ID); //次の記事の抜粋 echo '</a>'; categories_next(); echo get_the_date($nextPost->ID); } ?>

試したこと

それぞれの <?php ~ ?>の最後から2行目、
・echo get_the_date($prevPost->ID);
・echo get_the_date($nextPost->ID);
で表示できると思いましたがダメでした。
他には、
・echo $prev_post->post_date;
・echo $next_post->post_date;
なども試しましたがうまくいきません。

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

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

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

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

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

guest

回答1

0

ベストアンサー

echo the_time('Y/m/d');

the_time は、テンプレートタグ/the_time

現在の投稿の公開時刻を表示します。投稿の公開時刻を取得するには get_the_time()を使います。 この関数はループ内で使用する必要があります。

とあるように WordPress 投稿表示ループ内で、現在の表示している投稿IDの日時を表示します。

また、 the_time は、HTML を表示するので、 echo は、不要です。


・echo get_the_date($prevPost->ID);
・echo get_the_date($nextPost->ID);
で表示できると思いましたがダメでした。

まず、書式が間違っています。

関数を使う場合は、 WordPress Codex 日本語版 等のドキュメントを参照して、正しいパラメータを確認しましょう

WordPress Codex 日本語版 のテンプレートタグ/get_the_dateget_the_date( $format, $post_id ); とあるように 1番目のパラメータで 「日付のフォーマット」を指定、2番目のパラメータで「投稿ID」を指定します。
質問の記載方法だと 日付のフォーマットとして、投稿IDを与えているので、正しく表示されません。

書式通りの書き方をして、echo get_the_date('Y/m/d', $prevPost->ID); としたらどうなるでしょうか?


コメントに対する追記

もし前の記事(もしくは次の記事)にさむねいるが設定されていない場合、人気のサムネイル(画像)を表示表示する記述

人気のサムネイルというのがよくわかりませんが、 has_post_thumbnail 関数で、投稿にアイキャッチ画像が設定されているかを判断できるので、アイキャッチ画像がある場合は、登録されている画像を使って、アイキャッチ画像の設定がない場合は、別途用意したデフォルトの画像を使うように条件判断すればよいのではないでしょうか。

if( has_post_thumbnail($prevPost->ID) ){ // 画像がある場合 echo '<div class="pager_img">'.get_the_post_thumbnail($prevPost->ID).'</div>'; //前の記事のサムネイル } else { // 画像がない場合 echo '<div class="pager_img"><img src="' . get_stylesheet_directory() . '/images/default-thumbnail.jpg" /></div>'; //デフォルトのサムネイル }

のような感じでしょうか。

投稿2021/02/14 22:50

編集2021/02/15 00:24
CHERRY

総合スコア25218

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

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

N_So

2021/02/15 00:06

CHERRYさんありがとうございます! 上手く表示されました! また、追加の質問で申し訳ありませんが、もし前の記事(もしくは次の記事)にさむねいるが設定されていない場合、人気のサムネイル(画像)を表示表示する記述はどのようにすれば宜しいでしょうか? 宜しくお願い致します。
CHERRY

2021/02/15 00:26 編集

> 人気のサムネイル がわかりませんでしたが、アイキャッチのない場合の条件判断の例を回答欄に追記しました。
dit.

2021/02/15 00:32

人気のサムネイル→任意のサムネイル ですかね
N_So

2021/02/15 00:49

CHERRYさん、ありがとうございました! おかげざまでうまくいきそうです!! 本当に助かりました!!!
CHERRY

2021/02/15 00:53

dit. さん コメントありがとうございます。 なるほど。 任意か。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問