<?php $wareki = the_date('Ymd', '', '', false); ?>
とかにして $wareki を和暦に変換すればいいのでは?
gatespace世話役さま
早速の投稿をありがとうございました!
すみません、当方、PHP・JavaScript初心者でして、和暦への変換がよくわからない状態なのですが
http://www.sandalot.com/javascriptで西暦を和暦に変換する関数/のようなコードをfunction.phpに追記すればいいのでしょうか。
西暦を和暦に変換するには何らかの関数などを使わないといけません。
テーマのファイルに書くなら JavaScript ではなくでPHPでやった方が良いかと。
PHP 和暦変換 で参考になるようなソースはたくさん出てきます。
テンプレートファイル側で複数箇所で呼び出す可能性があるなら、
テーマの functions.php に関数を作っておけば使い回しが聞くでしょう。
以前自分か作った適当な物ですが、
テーマのfunctions.phpに
function jp_wareki( $datenum ) {
$y = substr( $datenum, 0, 4 );
$m = substr( $datenum, 4, 2 );
$d = substr( $datenum, 6, 2 );
if ( checkdate($m, $d, $y) ) {
if ( $datenum >= 19890108 ) {
$wname = "H";
$y -= 1988;
} elseif ( $datenum >= 19261225 ) {
$wname = "S";
$y -= 1925;
} elseif ( $datenum >= 19120730 ) {
$wname = "T";
$y -= 1911;
} elseif ( $datenum >= 18680125 ) {
$wname = "M";
$y -= 1867;
}
$datenum = $wname.(string)$y;
} else {
$datenum = "日付が正しくありません。";
}
return $datenum;
}
を書いておいて、テンプレートファイルの使いたいところ以下の様に書きます
<?php
$wareki = the_date('Ymd', '', '', false); //the_dateの戻り値を使う
echo jp_wareki($wareki); // 2013年3月19日 なら H25
?>
gatespace世話役さま
いつもありがとうございます。
丁寧な解説、感謝します!
早速、教えていただいたコードをfunctions.phpを追記し、
<?php the_date( ■ Y, '<li>', '年 ■</li>' . "\n" ); ?>
の替りに
<?php
$wareki = the_date('Ymd', '', '', false); //the_dateの戻り値を使う
echo jp_wareki($wareki); // 2013年3月19日 なら H25
?>
を書いた所、和暦表記はできたのですが、
H25
・2013年 投稿2
日付が正しくありません。
・2013年 投稿1
という形の表記になりました・・・。
<?php the_date( ■ Y, '<li>', '年 ■</li>' . "\n" ); ?>
は、
http://www.imaginationdesign.jp/blog/wordpress/1297/を参照させていただいたのですが、
この、リストの上に年数を出す原理が、いまいちわかっておらず、
<?php the_date( ■ Y, '<li>', '年 ■</li>' . "\n" ); ?>
<?php echo '平成'. (get_the_date('Y')-1988) .'年'; ?>
などを試したみたのですが、
■ 2013年 ■
平成25年
・2013年 投稿2
平成25年
・2013年 投稿1
という感じの表示になり、なかな打開策がみつからない状態です・・・。
もしなにかよい案があれば教えていただけると助かります。
なにからなにまですみません・・・。
$wareki を jp_wareki関数に渡して、そこで正しい日付かどうかチェックしています。
正しい日付でない場合、「日付が正しくありません。」が表示されます。
ということは $wareki の値が正しくない、という事です。
試しに
<?php
$wareki = the_date('Ymd', '', '', false); //the_dateの戻り値を使う
var_dump( $wareki );
?>
としてみてください。
あと the_date は
the_date( ■ Y, '<li>', '年 ■</li>' . "\n" );
ではなく
the_date( 'Y', '<li>■', '年■</li>' . "\n" );
と書いた方が良いかもしれません。
the_date
リファレンスを読んで欲しいのですが、
the_date は 同じ日に複数の記事がある場合は、最初の記事とともに一度だけ出力されるので、
年が同じでも月日が違えば複数回出力されます。
ブログ記事なども参考になりますが、応用が利かない場合もありますので、
PHPのリファレンスやWordPressのCodexもあわせて読んだ方がいいですよ。
gatespace世話役さま
いろいろありがとうございます!
すみません。勉強不足で、やはり、テスト投稿記事が同日だった為、
■2013年 ■
・2013年 投稿2
・2013年 投稿1
が実現できていたのですが、投稿日を変更した所、
2013年 ■
・2013年 投稿2
2013年 ■
・2013年 投稿1
となってしましました。
もう一度、調べ直した所、
<ul>
<?php query_posts('cat=6', array('posts_per_page'=>-1,'order'=>'DESC','orderby'=>'date') );
if ( have_posts() ) :
$postyear = false; // 比較用の変数を初期化
while ( have_posts() ) :
the_post();
if( $postyear != get_post_time('Y') ) : // 投稿年月を比較
if ( $postyear !== false ) : // 最初のループは除外。2回目以降で投稿年月が異なれば閉じタグを出力
?>
</ul>
</li>
<?php
endif;
?>
<li><span><?php echo get_post_time('■ Y年'); ?>
(<?php
$wareki = the_date('Ymd', '', '', false); //the_dateの戻り値を使う
echo jp_wareki($wareki); // 2013年3月19日 なら 平成25
?>年) ■</span></li>
<ul>
<?php
endif;
?>
<li><span class="kouen_days"><?php the_time('20y年m月d日'); ?> : </span>
<p><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<?php the_title(); ?></a></p></li>
<?php
$postyear = get_post_time('Y'); // 比較用の変数に年月を代入
endwhile;
endif;
wp_reset_query();
?>
</ul>
で実現する事ができました!
<?php
$wareki = the_date('Ymd', '', '', false); //the_dateの戻り値を使う
var_dump( $wareki );
?>
に変更した所、「NULL」になってしまったので、echoにもどした所、上手くいきました!
またいろいろ勉強していきたいと思います!
ありがとうございました。