出勤・スケジュール管理の覚書

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

カスタム投稿「スケジュール(1日1投稿)」「キャスト(1人1投稿)」、カスタムフィールドの設定はAdvanced Custom Fields を使用。

「スケジュール」はデイトピッカーで日付を指定し、この日付がタイトルになるように設定。繰り返しフィールドで投稿オブジェクト(キャスト)と勤務時間のフィールド。
「スケジュール」のアーカイブは日付が今日よりも大きいものを表示。出勤キャストの情報は投稿オブジェクトのフィールドを取得して、そのIDからキャストのカスタムフィールドを取得して表示。

<?php if (get_field('casts')) { ?><?php while(the_repeater_field('casts')): ?>
<?php $post_object = get_sub_field('cast'); ?><?php the_field('profile', $post_object->ID); ?>
<?php endwhile; } ?>

「キャスト」の個別ページに数日分のスケジュールを表示。
今日の日付、今日プラス1、今日プラス2…で日付を取得して、「スケジュール」の、その日付のタイトルの投稿IDを取得、そのIDの繰り返しフィールドの中にキャストの投稿のIDがあったら勤務時間を表示。

*日付を取得する際にズレがある場合はタイムゾーンを指定。

<?php date_default_timezone_set('Asia/Tokyo'); $week = array ( '日', '月', '火', '水', '木', '金', '土' ); ?>
<?php echo date("n月j日"); echo ' (' . $week[date ('w')] . ')'; ?>
<?php echo date("n月j日", strtotime("+1 day")); echo ' (' . $week[date ( 'w', strtotime("+1 day") )] . ')'; ?>
<?php echo date("n月j日", strtotime("+2 day")); echo ' (' . $week[date ( 'w', strtotime("+2 day") )] . ')'; ?>

その他のAdvanced Custom Fields に関する記事一覧

Advanced Custom Fields に関する記事一覧ページへ