日付を編集して曜日と祝日を表示するショートコード

この記事は約6分で読めます。

Image

指定した日付に曜日と祝日を追加して表示するショートコードを作りました。祝日はGoogleカレンダーの日本の祝日から取得しました。

仕様:日付を与えたら曜日と祝日情報を追加して返す

[ryus_day_dayedit day=”2014-09-23″]

のように記述すると

Image

のように表示する。日付を指定しなければ本日の曜日と祝日表示を追加して返す。というようなことにします。

Googleカレンダーの日本の祝日から指定した日付の祝日を取得する

Image

Googleカレンダー 歯車のアイコン>設定 をクリック

Image

カレンダータブをクリック

Image

日本の祝日をクリック

Image

xmlをクリックすると、

Image

urlが表示されます。これを使って祝日を取ってくることにします。

日付を編集するショートコード

日付を編集するショートコードのコーディングを子テーマのfunctions.phpに追加します。

function ryus_day_dayedit($atts){
    // day は yyyy-mm-dd の形で指定されている
    /* 引数を展開する */
    extract(
        shortcode_atts(
            array(
                'day' => ''
            ),
            $atts
        )
    );
    if($day == ''){
        $day = date("Y-m-d", strtotime('today'));
    }
    return _ryus_day_dayedit($day);
}

function _ryus_day_dayedit($day){
    // dayで渡された日付に曜日と祝日であればその内容を追加して返す
    $youbi = _waYoubi(date('w', strtotime($day)));
    $shukujitsu = _getShukujitsu($day);
    
    // html。必要に応じて適宜変更する
    $dayHtml = '<div style="width:100%;border:dotted 1px #333;padding:5px;margin-bottom:5px;">'.$day.'('.$youbi.') '.$shukujitsu.'</div>';

    return $dayHtml;
}
add_shortcode( 'ryus_day_dayedit', 'ryus_day_dayedit' );

function _waYoubi($w){
    $waYoubi = array('日', '月', '火', '水', '木', '金', '土');
    return $waYoubi[$w];
}

function _getShukujitsu($day){
    // 日本の祝日feed
    $feed = 'https://www.google.com/calendar/feeds/ja.japanese%23holiday%40group.v.calendar.google.com/public/basic';
    $start = urlencode(date(DATE_ATOM, strtotime($day.' 00:00:00 +9 hour')));
    $end = urlencode(date(DATE_ATOM, strtotime($day.' 23:59:59  +9 hour')));
    $addParam = '?start-min='.$start.'&start-max='.$end;
    $xml = simplexml_load_file($feed.$addParam);
    if(isset($xml->entry)){
            return $xml->entry[0]->title;
    }
    return '';
}

ryus_day_dayedit
ショートコードの入り口で引数を展開しています。dayの指定が無ければ本日の編集結果を返します。
// html。必要に応じて適宜変更する
に書いてあるのがhtmlなので、好みに応じて適宜変更します。

_ryus_day_dayedit
日付編集部分の本体です。他のfunctionからも呼べるように別のfunctionにしました。

_waYoubi
与えられた日付に対応する日本語の曜日を返します。

_getShukujitsu
$feed に指定してあるのが先ほど 日本の祝日のxmlをクリックして表示されたurlです。
$startと$endで指定された日付のデータを取得します。+9 Hourとしているのは日本の時差です。こうしないと日付がちょっとずれてしまいました。与えられた日付が祝日であれば祝日名を返します。

どんな風になるかまとめて書いてみました

祝日の表示がどんな風になるかまとめて、

[ryus_day_dayedit day="2014-09-15"]
[ryus_day_dayedit day="2014-09-16"]
[ryus_day_dayedit day="2014-09-17"]
[ryus_day_dayedit day="2014-09-23"]
[ryus_day_dayedit day="2014-05-01"]
[ryus_day_dayedit day="2014-05-02"]
[ryus_day_dayedit day="2014-05-03"]
[ryus_day_dayedit day="2014-05-04"]
[ryus_day_dayedit day="2014-05-05"]
[ryus_day_dayedit day="2014-05-06"]

こんな風に書いてみました。すると、

Image

このように表示されました。

こちらに利用例としてサンプルの固定ページを置きました。

日付を編集して曜日と祝日を表示するショートコードの見本

コードは、

来年の5月?
[ryus_day_dayedit day="2015-05-01"]
[ryus_day_dayedit day="2015-05-02"]
[ryus_day_dayedit day="2015-05-03"]
[ryus_day_dayedit day="2015-05-04"]
[ryus_day_dayedit day="2015-05-05"]
[ryus_day_dayedit day="2015-05-06"]

今日?
[ryus_day_dayedit]

こんな感じです。来年の5月はどうなるかな?ということで来年の5月の日付を入れて、日付を指定しない 今日?を書いてみました。今日?は見る日によって表示が違ってくるのが分かると思います。

何かの予定を書いたりするときに便利かと思いますので使ってみて下さい(^^)/

兎本美佳

ブログを見た人がそのままできたらいいなと思って、できるだけ丁寧に書いています。blogに書いたようなネタの有償対応のご相談は「ゆうそうと」へいただければと思います(^^)/
無償での対応をご希望の場合は、コメントをいただけましたら可能な場合はコメントを返させていただきます。

ゆうそうとITブログの更新通知が受け取れます!
スポンサー広告

WordPress 全般 インターネット Googleカレンダー
スポンサーリンク
ゆうそうとITブログの更新通知が受け取れます!
ゆうそうとITブログ

コメント

トップへ戻る

ゆうそうとについての説明

ゆうそうと とは東京都八王子市を中心として、WordPressによるWEBサイトの作成や、スポットでのIT相談を行ったり、年間契約でのIT顧問をなりわいとして活動しています。

特徴としては30年以上IT業界でプログラムを中心として仕事をしてきたものと、美大出身のデザイナーがワンストップで対応するため、幅広い対応が可能であることです。

IT相談は直接お会いしてのご相談の他、ZOOMによるオンライン相談も可能です。