こんにちわ、wanwancoさん。
以下の様な方法で実現が可能かと思います。
- カスタムフィールドに enddey などの名前で終了日時や期限を入れて保存しておく
- カスタムフィールドの値と現在日時を比較して条件分岐
カスタムフィールドの作成はプラグイン ( Advanced Custom Fields ) などを使ってサクッと実装してしまえばよいと思います。
ご返信ありがとうございます。
参考にさせて貰い、カスタムフィールドで日付を設定してfunction.phpに以下のように追記しました。
// イベント切り替え用関数
function normalizeTime($date_str) {
// 年月日の各パーツを分割する
preg_match( “/([0-9]*)年([0-9]*)月([0-9]*)日/”, $date_str, $data );
if ( Count( $data ) != 4 ) {
return $str;
}
// 先頭0埋めでYYYYMMDD形式の日付文字列に変換する
$outStr = sprintf( “%04.4d/%02.2d/%02.2d”, $data[1], $data[2], $data[3] );
return strtotime($outStr);
}
また、以下のようにテンプレートに追記しました。
<?php
$event_date = post_custom(‘event_date’);
$event_date_time = date_i18n(‘Ymd’, normalizeTime($event_date));
if (date_i18n(‘Ymd’) > $event_date_time) {
echo “<イベント終了>”;
} else {
echo “<ご案内>” . esc_html($event_date);
}
?>
しかし、うまく分岐ができず、ずっと<イベント終了>と表示されてしまいます。
すいません、ちょっと意味がわからないのですが、どういった意味なのでしょう?
array() になっていませんか?
コード自体は上記書いたとおりなので、コード自体の問題なのでしょうか?
カスタムフィールドは、端折って、20141212 形式
<?php
$event_date = post_custom('event_date');
//これだと、間違って、カスタムフィールドに2回 event_dateを入力すると配列になる
//なので、var_dump( $event_date ); してみてはどうでしょう という意味です。
$event_date = get_post_meta( $post->ID , 'event_date' , true );
//これは、常に文字列で取得
if ( date_i18n('Ymd') > $event_date ) {
echo "<イベント終了>";
} else {
echo "<ご案内>" . esc_html($event_date);
}
?>
重ね重ねありがとうございます。
うまく動きました。
ちょっとpost_customの使い方よく分かっていませんでした。
ありがとうございました。