こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Wordpressのタグを使ったPHPで著作権表示

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」となってしまいます。

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

投稿日時 - 2010-11-17 05:23:34

QNo.6324812

困ってます

質問者が選んだベストアンサー

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%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_date

投稿日時 - 2010-11-17 10:22:59

お礼

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

投稿日時 - 2010-11-17 11:27:45

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問