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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

497閲覧

Wordpressで実装されたサイトでブログ投稿の日付を正しく表示したいがうまく表示されない

gitbitmit

総合スコア1

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/11/01 08:02

編集2022/11/01 08:44

前提

Wordpressで実装されたサイトについてのご質問です。4年〜5年ほど前に制作会社さんに制作いただいたWPのオリジナルテーマで運用をしております。私は、新しくサイト運用担当者になり運用や保守等の業務をしております。HTMLやCSS、jQueryは理解しておりますが、PHPはなんとなくソースコードが読めるくらいのレベル感で、わからないことをGoogleやQiitaで検索してなんとかサイトの更新をしている状況です。

実現したいこと

  • サイトトップページで表示しているブログ投稿の日付を正しく表示したい

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

Wordpressで実装しているサイトのトップページの下あたりに最新のブログ記事が数個並んでいます。

最新のブログ投稿のサムネとタイトルと投稿日を表示している一般的な仕様だと思います。

ただ、日付を抽出するソースで特に問題がないと思っているのですが、投稿日が表示されるはずの場所に、なぜ別の日付(2019/03/11)が表示されます。投稿ページに飛ぶと投稿ページの方では問題なく正しい日付が表示されています。ちなみに、その投稿ページのソースコードも以下の見出しで記載のソースコードと一緒です。

該当のソースコード

<section class="news"> <div class="news-area"> <h2>ブログ</h2> <div class="articles"> <?php $posts = get_posts(array('post_type' => 'post', 'numberposts' => 3, 'orderby' => 'date', 'order' => 'DESC')); ?> <?php foreach ($posts as $post) : ?> <?php $id = $post->ID; $title = $post->post_title; if(mb_strlen($title, 'UTF-8') > 32){ $titlestr = mb_substr($title, 0, 32).'.'; } else { $titlestr = $post->post_title; } $imageurl = get_the_post_thumbnail_url($id, 'large'); $category = get_the_category()[0]; ?> <div class="article article-area match-height"> <figure> <div class="img-wrap"> <img alt="<?php echo $title ?>" src="<?php echo $imageurl; ?>"> </div> <figcaption> <div class="cat-area"> <p><?php echo $category->cat_name; ?></p> </div> <h3><?php echo $titlestr; ?></h3> <div class="date-area"> <p><time datetime="<?php echo the_time('Y-m-d'); ?>" itemprop="datePublished"><?php echo the_time('Y/m/d'); ?></time></p> </div> </figcaption> <a href="<?php echo get_permalink($id); ?>"></a> </figure> </div> <?php endforeach; ?> </div> <div class="link-button link-icon"> <a href="<?php echo home_url(); ?>/blog/">もっと見る</a> </div> </div> </section>
<p><time datetime="<?php echo the_time('Y-m-d'); ?>" itemprop="datePublished"><?php echo the_time('Y/m/d'); ?></time></p>

試したこと

日付の表示のさせ方は他にもあるようでしたので、該当箇所を代わりに

php echo get_the_date('Y/m/d');

と表示させてみても同じで、なぜ別の日付(2019/03/11)が表示されます。他にもWordpressの日付形式で表示させるようなことをしてみましたが、別の日付(2019年03月11日)と表示されます。
※Wordpressの日付形式を(Y年n月j日)としているためです。

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

WPのバージョンは、5.9.5です。

サーバーの状況は以下です。

  • サーバー構造 Linux
  • Web サーバー Apache
  • PHP バージョン 7.4.28

※エックスサーバーを使用しています。

データベースの情報は以下です。

  • 拡張機能 mysqli
  • サーバーバージョン 5.7.16
  • 現在のバージョン mysqlnd 7.4.28

不具合が確認される端末は、

  • Mac Chrome
  • Windows Edge
  • iPhone safari

なので、おそらくほとんど全ての端末です。

アドバイスいただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

CHERRY

2022/11/01 08:40

ソースコードは 一行だけではなく、一連の流れがわかる範囲で記載していただけないでしょうか。 今回の the_time() の場合は、ループの内外で動作が変わる関数ですので、 > トップページの下あたりに最新のブログ記事が数個並んでいます。 に関係する一連のコードを質問に記載していただけないでしょうか。
gitbitmit

2022/11/01 08:45

ご指摘いただきありがとうございます。 質問に、追記させていただきました。
guest

回答1

0

ベストアンサー

処理は get_posts() で投稿を取得して foreach でサブループをまわして、いわゆる WordPress ループの外から呼び出している感じですね。

コードを見るとタイトルは the_title()get_the_title() ではなく、 $title = $post->post_title; と、パーマリンクは the_permalink() ではなく get_permalink($id); とループ外でも使用できるように書かれているのに なぜ日付だけは、 the_time('Y-m-d'); なのでしょうね。

<?php echo the_time('Y-m-d'); ?> をループ外で使用できる get_the_time() を使用して

PHP

1<?php echo get_the_time( 'Y-m-d', $id ); ?>

のように 投稿IDを指定して記載するとどうなるでしょうか。

投稿2022/11/01 09:08

CHERRY

総合スコア25171

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

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

gitbitmit

2022/11/01 10:27

アドバイスいただきましてありがとうございます。 投稿IDを指定することによって無事投稿の日時が正確なものになりました。 Goolgeなどで検索して出てきた記事をいろいろ読んでいたらthe_time(); よりも get_the_time() ; の方が良いという記載がありあんまり理解できませんでしたが、ループの外で使用できるなどの違いがあることも勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問