やり方は色々あると思います。
カテゴリーや担当者の数が多いと不効率ですが、何をやっているのかがわかりやすいコードですと、こんな感じでしょうか。
※get_postsのパラメータは、たくさん種類が有りますので適宜変更してください。
<?php
$myPosts = get_posts(
array('numberposts'=>1,
'category'=>'100',
'orderby'=>'post_date',
'order'=>'DESC',
'post_type'=>'post',
'post_status'=>'publish'
)
);
?>
<li>ここに担当Aの最終投稿日<?php echo $myPosts[0]->post_date; ?></li>
特定のカテゴリーに投稿された記事を1件取得し、その日付を見ればよいと思います。
- テンプレートタグ/get_posts
- テンプレートタグ/get_the_time
ue様
hissy様
返信が遅くなって申し訳ありません。
本日お二方のアドバイスを参考にし、設定してみます!
解決方法、不明点などありましたら、改めて追記させていただきます。
ありがとうございました!
ue様の内容を元に固定ページに該当カテゴリーに投稿された
最新の日時が表示されるようになりましたが、
できれば(“Y年n月j日”)だけの表記にしたいです。
hissy様から頂いた内容も参考に色々と調べましたが、
何をどう試しても時間:分:秒が表示されてしまいます。
お手数をお掛けしますが、ご教授のほどよろしくお願いします。
Codexのget_postsのページのコードの様に、setup_postdataを使ってテンプレートタグを使えば解決します。
hissy様
早速の回答ありがとうございます。
get_postsを使って新たにコードを作りなおしました。
<ul class="menu">
<li>担当A(カテゴリーID:100)</li>
<li>ただ今準備中です。しばらくお待ちください。</li>
<?php
global $post;
$args = array('numberposts'=>1,'category'=>100 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li><?php echo date("Y/m/d") ?></li>
<?php endforeach; ?>
</ul>
このリストには下線が引かれるようにCSSで設定しているのですが、
該当する投稿がない場合空白となり、下線が表示されなくなりました。
該当する投稿がない場合は「未投稿です。」と表示させるか、
空白でも構わないので下線が表示されるようにしたいのですが、
どのように対応すればいいでしょうか?
<?php _e('Sorry, no posts matched your criteria.'); ?>
これが関係あるのかと思い、色々と調べてみたのですが、
素人が小手先でやろうとしているので、なかなかうまくいきません(涙)
まあ、こんな感じですかね
<?php
$args = array('numberposts'=>1,'category'=>100 );
$myposts = get_posts( $args );
if ( $myposts ) :
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li><?php echo date("Y/m/d") ?></li>
<?php endforeach; else: ?>
<li>未投稿です。</li>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
そうだ、setup_postdataを使ったら wp_reset_postdata() でリセットするのをお忘れなく…
hissy様
またまたお返事が遅くなってすみません。
やはり素人が検索だけで作ると、
全然違うものになってしまいますね^^;
wp_reset_postdata()の件も、
教えてもらわなければ調べることもなかったです…
早速いただいたコードを使ってページを作ったところ、
思っていたような表示にすることができました!
ありがとうございました★
hissy様
こんにちは。
すみません、昨日解決したと書き込みしたのですが…
さっきページを確認したところ、最新の投稿日が今日になっていました。
今日は一度も投稿していないのに…;;
<?php
$args = array('numberposts'=>1,'category'=>100 );
$myposts = get_posts( $args );
if ( $myposts ) :
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li><?php echo date("Y/m/d") ?></li>
<?php endforeach; else: ?>
<li>未投稿です。</li>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
頂いた通りのコードだと思うのですが…
担当毎にカテゴリーネームを変えて同じコードを、
1ページ内に複数記入しているのですが、それは問題ないでしょうか?
お手数をお掛けして申し訳ございませんがよろしくお願いします。
ごめんなさい間違えてたのに気づきませんでした…。
最初の方に書いた通りテンプレートタグ「get_the_time」を使ってください。
<?php
$args = array('numberposts'=>1,'category'=>100 );
$myposts = get_posts( $args );
if ( $myposts ) :
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li><?php echo get_the_time("Y/m/d") ?></li>
<?php endforeach; else: ?>
<li>未投稿です。</li>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
hissy様
早速のご回答ありがとうございます^^
でも今度は何故かユーザー登録日になってしまいました…
Exec-PHPを入れて固定ページに直接書いているのですが、
入力後に<p>や
が入ってしまうことが原因でしょうか?
(更新時には削除している&他のページでは問題ないのですが…)
一応自分でも検索して「get_the_time」について調べてみたところ、
「更新時間をPHPの値として返す。」となっていたのですが、
この「時間」というのは「日付(date)」も含む時間なのか、
単に「time」を表していることなのでしょうか?
せっかく丁寧に教えていただいているのに、
知識がないばっかりにお手間を取らせてすみません><
Exec-PHPはサポート外とさせてください。個人的にはあまり推奨しないです。ショートコードにしたほうがいいんじゃないかと。
get_the_timeは年月日時分秒までデータとして持っていますが、年月日までしかフォーマットに指定しなければそのように出力されます。
hissy様
そうなんですね^^;
ショートコード…勉強してみます(汗)
色々と手助けしていただき、ありがとうございました!
ショートコードで解決できたら、また解決法など更新します★