プロが教えるわが家の防犯対策術!

Wordpress でオリジナルテーマを作っています。
footer.php に著作権の年度表示をしようと思い、以下のように記述しました。

<?php $oldest = get_posts( 'numberposts=1&orderby=post_date&order=ASC' ); ?>
<?php foreach( $oldest as $post ) : setup_postdata( $post ); endforeach; ?>
<?php $oldest = the_date( 'Y' ); $latest = date( 'Y' ); ?>
<?php if ( $oldest == $latest ) : echo $latest;
else : echo $oldest.'-'.$latest;
endif; ?>

最古記事の年を取得し、「最古記事年-最新記事年」というふうに出力します。
最古記事の年が最新記事の年と同じなら最新記事の年のみを出力、というようにしたかったのですが、
2008年や2009年の記事がある場合はちゃんと「2008-2010」と表示されるのですが、2010年の記事しかなかった場合「2010」とのみ表示されるはずが「2010-2010」となってしまいます。

どうか皆さんの知恵をお貸しください。よろしくお願いいたします。

A 回答 (1件)

Wordpressは使用したことがないので想像になってしまいますが・・・



the_date()というものを調べると、第4パラメータがtrueである場合はページに出力
falseである場合はPHPで使用できる値として日付を返す、とありました。
そしてデフォルト(指定なし)はtrueであるようです。

そのため
(1)<?php $oldest = the_date( 'Y' ); $latest = date( 'Y' ); ?>では
$oldestには何も設定されず、記事の年が出力される。

(2)<?php if ( $oldest == $latest ) : echo $latest;
else : echo $oldest.'-'.$latest;
endif; ?>
では、$oldestになにも設定されていないので必ず偽となり
「'-'.$latest」が出力される。

(1)と(2)の出力がくっついて「2008-2010」「2010-2010」となっているのではないでしょうか?

<?php $oldest = the_date( 'Y', '' ,'' , false ); $latest = date( 'Y' ); ?>と変更して確かめてみてください。

参考URL:http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3% …
    • good
    • 0
この回答へのお礼

うわわわわ X/
パラメータの記述忘れなんてお恥ずかしい限りでございます…!
ずっとforeachの位置とかいじってました…
duronさんのおかげでうまくいきました!ありがとうございます!
回答も予想以上に早く、感謝感謝です。:D

お礼日時:2010/11/17 11:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!