wordpress キャスト管理・krc-cast-manager カスタム

WordPress

※現在のバージョンでは、無いのでこのままコピーしても表示されません。

wordpress でキャスト管理・出勤管理ができるプラグイン「krc-cast-manager」の設定方法を紹介します。

「krc-cast-manager」は、キャスト管理プラグインですが

カスタム次第では、エステや塾などでも使用可能なプラグインです。

機能は、女性のプロフィール登録・出勤管理・本日の出勤・週間の出勤表・ランキングなどがあります。

無料のキャスト管理プラグインでは、最も優秀なプラグインです。

CSS・jsの説明はしておりませんのでご了承ください。

krc-cast-manager 設置デモ

とりあえず、「krc-cast-manager」の設置デモが見当たらなかったので作ってみました。

在席キャスト管理システム「krc-cast-manager」の設置デモ

プラグインをダウンロード

GitHubからプラグインをダウンロードする。

ダウンロードファイル「krc-cast-manager-master.zip」

krc-cast-manager-master.zip
krc-cast-manager-master.zip

「krc-cast-manager-master.zip」解凍後

krc-cast-manager-master
krc-cast-manager-master

「krc-cast-manager」とフォルダ名を変更する。

URL「krc_cast」「krc_ranking」の変更

解凍したファイルのまま使用するとURLがキャストの場合「krc_cast」

ランキングでは「krc_ranking 」となり不自然なので

「krc_cast」を「cast」 に 「krc_ranking 」を「ranking 」に変更する。

※現在のバージョンでは「cast」と表示されるので、この作業は必要ありません

(URLを変更しない場合は、下記のファイルコードでは動作しないのでご了承ください。)

フォルダ内マルチ検索・マルチ変換の機能のあるエディタで

「krc_cast」を「cast」に「krc_ranking 」を「ranking 」に変更する。

スケジュールの時間の変更

krc-cast-schedule.js
krc-cast-schedule.js
krc-cast-schedule.js

plugins/krc-cast-manager/js/krc-cast-schedule.jsの変更

12行目からの

	var time_popup = '<dd class="time_input"><div class="time_popup"><dl><dt><label for="遅早表記">遅早表記</label></dt><dd><select name="fastslow" class="fastslow"><option value="0">指定無</option><option value="早番">早番</option><option value="中番">中番</option><option value="遅番">遅番</option></select></dd></dl><dl><dt><label for="時間表記">時間表記</label></dt><dd><select name="starttime" class="starttime"><option value="0">指定無</option>';
	time_popup += '<option value="OPEN">OPEN</option>';
	for (var i = 10; i <= 26; i++) {
		time_popup += '<option value="' + i + '時">' + i + '時</option>';
	}
	time_popup += '</select><br>から</dd><dd><select name="endtime" class="endtime"><option value="0">指定無</option>';
	for (var i = 10; i <= 26; i++) {
		time_popup += '<option value="' + i + '時">' + i + '時</option>';
	}
	time_popup += '<option value="LAST">LAST</option>';
	time_popup += '</select></dd></dl></div></dd>';

を下記のように30分刻みに変更

	var time_popup = '<dd class="time_input"><div class="time_popup"><dl><dt><label for="時間表記">時間表記</label></dt><dd><select name="starttime" class="starttime"><option value="0">指定無</option><option value="-TEL確認">-TEL確認</option>';
		time_popup += '<option value="6:00">6:00</option><option value="6:30">6:30</option><option value="7:00">7:00</option><option value="7:30">7:30</option><option value="8:00">8:00</option><option value="8:30">8:30</option><option value="9:00">9:00</option><option value="9:30">9:30</option><option value="10:00">10:00</option><option value="10:30">10:30</option><option value="11:00">11:00</option><option value="11:30">11:30</option><option value="12:00">12:00</option><option value="12:30">12:30</option><option value="13:00">13:00</option><option value="13:30">13:30</option><option value="14:00">14:00</option><option value="14:30">14:30</option><option value="15:00">15:00</option><option value="15:30">15:30</option><option value="16:00">16:00</option><option value="16:30">16:30</option><option value="17:00">17:00</option><option value="17:30">17:30</option><option value="18:00">18:00</option><option value="18:30">18:30</option><option value="19:00">19:00</option><option value="19:30">19:30</option><option value="20:00">20:00</option><option value="20:30">20:30</option><option value="21:00">21:00</option><option value="21:30">21:30</option><option value="22:00">22:00</option><option value="22:30">22:30</option><option value="23:00">23:00</option><option value="23:30">23:30</option><option value="0:00">0:00</option><option value="0:30">0:30</option><option value="1:00">1:00</option><option value="1:30">1:30</option><option value="2:00">2:00</option><option value="2:30">2:30</option><option value="3:00">3:00</option><option value="3:30">3:30</option><option value="4:00">4:00</option><option value="4:30">4:30</option><option value="5:00">5:00</option><option value="5:30">5:30</option>';
		time_popup += '</select><br>から</dd><dd><select name="endtime" class="endtime"><option value="0">指定無</option><option value="-TEL確認">-TEL確認</option>';
		time_popup += '<option value="6:00">6:00</option><option value="6:30">6:30</option><option value="7:00">7:00</option><option value="7:30">7:30</option><option value="8:00">8:00</option><option value="8:30">8:30</option><option value="9:00">9:00</option><option value="9:30">9:30</option><option value="10:00">10:00</option><option value="10:30">10:30</option><option value="11:00">11:00</option><option value="11:30">11:30</option><option value="12:00">12:00</option><option value="12:30">12:30</option><option value="13:00">13:00</option><option value="13:30">13:30</option><option value="14:00">14:00</option><option value="14:30">14:30</option><option value="15:00">15:00</option><option value="15:30">15:30</option><option value="16:00">16:00</option><option value="16:30">16:30</option><option value="17:00">17:00</option><option value="17:30">17:30</option><option value="18:00">18:00</option><option value="18:30">18:30</option><option value="19:00">19:00</option><option value="19:30">19:30</option><option value="20:00">20:00</option><option value="20:30">20:30</option><option value="21:00">21:00</option><option value="21:30">21:30</option><option value="22:00">22:00</option><option value="22:30">22:30</option><option value="23:00">23:00</option><option value="23:30">23:30</option><option value="0:00">0:00</option><option value="0:30">0:30</option><option value="1:00">1:00</option><option value="1:30">1:30</option><option value="2:00">2:00</option><option value="2:30">2:30</option><option value="3:00">3:00</option><option value="3:30">3:30</option><option value="4:00">4:00</option><option value="4:30">4:30</option><option value="5:00">5:00</option><option value="5:30">5:30</option>';
		time_popup += '</select></dd></dl></div></dd>';

プラグインのアップデート

krc-cast-manager
krc-cast-manager

プラグインフォルダ 「plugins」へアップロードする

wp-content/plugins/krc-cast-manager

プラグインの有効化

プラグインの有効化
プラグインの有効化

krc cast manager を有効化にする

キャストマネージャー
キャストマネージャー

有効化するとサイドバーに「キャストマネージャー」が現れる

これでプラグインの設置は完了だが、ここからが「krc-cast-manager」の面倒なところです。

キャストの登録やスケジュール管理はできるのだが、

表示させるには「テーマ」に「php ファイル」を追加しないといけません。

使用テーマ

wordpressのテーマ BusinessPress での説明となります。

デモサイトもBusinessPressを利用しております。

追加するファイル

1・archive-cast.php
2・content-castlist.php
3・content-cast.php
4・single-cast.php
5・archive-ranking.php
6・single-ranking.php
7・content-rankinglist.php
8・page-schedule.php
9・テーマフォルダに「images」フォルダを作成
10・テーマフォルダに「images」フォルダに「no.jpg」画像を追加

※no.jpgは、表示したい画像サイズで制作してください。

URL変更(一括変換)で、

「krc_cast」を「cast」に「krc_ranking 」を「ranking 」に変更した場合のファイルです。

※「krc_cast」「krc_ranking 」のままでは表示されません

キャスト一覧ページ

archive-cast.php
archive-cast.php

archive.phpをコピーして、archive-cast.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

get_header(); ?>

<section id="primary" class="content-area">
	<main id="main" class="site-main">

	<?php if ( have_posts() ) : ?>

		<header class="page-header">
			<?php
				the_archive_title( '<h1 class="page-title">', '</h1>' );
			//	the_archive_description( '<div class="taxonomy-description">', '</div>' );
			?>
		</header><!-- .page-header -->

<div class="cssgrid "><!-- float Grid-->
	
		<?php /* Start the Loop */ ?>
		<?php while ( have_posts() ) : the_post();
		get_template_part('content',('castlist'));
		endwhile; ?>

</div><!-- float Grid -->

		<?php
		the_posts_pagination( array(
			'prev_text' => esc_html__( '« Previous', 'businesspress' ),
			'next_text' => esc_html__( 'Next »', 'businesspress' ),
		) );
		?>

	<?php else : ?>

		<?php get_template_part( 'template-parts/content', 'none' ); ?>

	<?php endif; ?>

	</main><!-- #main -->
</section><!-- #primary -->

<?php if ( '3-column' !== get_theme_mod( 'businesspress_content_archive' ) ): ?>
	<?php get_sidebar(); ?>
<?php endif; ?>
<?php get_footer(); ?>

変更箇所

archive-cast.php
get_template_part( 'content', get_post_format() );

get_template_part('content',('castlist'));

に変更する

キャスト一覧ページ

content-castlist.php
content-castlist.php

content.phpをコピーして、content-castlist.php ファイルを作る

キャスト一覧で表示させる項目は、このファイルを編集する。

このような記載ならば問題なく表示されるはずです。

	<?php
	$cast_fields = get_post_custom(); //カスタムフィールドを取得
	$cast_screens = json_decode($cast_fields['_cast_screens'][0]); //画像配列
	$cast_type_terms = get_the_terms($post->ID, 'type'); //タイプ
	$cast_grade_terms = get_the_terms($post->ID, 'grade'); //グレード
	$cast_new_terms = get_the_terms($post->ID, 'krc_new'); //新人
	?>
		
<div class="cast-photo">
<a href="<?php the_permalink();?>">
<?php if( empty($cast_screens) ): ?>
<!-- キャスト画像をアップロードしていない場合、テーマフォルダに「images」フォルダから・「no.jpg」を表示する -->

<img src="<?php echo get_stylesheet_directory_uri();?>/images/no.jpg" class="trimming" loading="lazy" alt="<?php echo esc_html($cast_fields['_krc_name'][0]);?>">
<!-- 「images」フォルダ・「no.jpg」 は前もって作成する必要がある--> <!--wp-content/themes/○○/images/noimg.jpg--> 
<?php else: ?>
<img  src="<?php echo esc_url($cast_screens[0]);?>" class="trimming" loading="lazy"  alt="<?php echo esc_html($cast_fields['_krc_name'][0]);?>"><!-- キャスト画像 -->    
<?php endif;?>
</a>
		
<p class="cast-name"><?php echo esc_html($cast_fields['_krc_name'][0]);?></p>
<p class="cast-size"><?php echo esc_html($cast_fields['_krc_age'][0]);?>歳・T:<?php echo esc_html($cast_fields['_krc_tall'][0]);?></p>
<p class="cast-size">B:<?php echo esc_html($cast_fields['_krc_bust'][0]);?>(<?php echo esc_html($cast_fields['_krc_cups'][0]);?>) W:<?php echo esc_html($cast_fields['_krc_waist'][0]);?> H:<?php echo esc_html($cast_fields['_krc_hips'][0]);?></p>

<?php if( empty($cast_new_terms) ): ?><?php else: ?>
<p class="cast-new"><img src="<?php echo get_stylesheet_directory_uri();?>/images/new2.png" alt="新人"></p>
<?php endif;?>

<p class="cast-grade"><?php if( empty($cast_grade_terms) ): ?> <?php else: ?>
<a href="<?php echo esc_url( home_url( '/' ) ); ?>grade/<?php echo esc_html($cast_grade_terms[0]->slug); ?>"><img src="<?php echo get_stylesheet_directory_uri();?>/images/<?php echo esc_html($cast_grade_terms[0]->name);?>.png" alt="<?php echo esc_html($cast_grade_terms[0]->name);?>"></a><?php endif;?></p>



<!--タイプ <p class="cast-type"><?php if( empty($cast_type_terms) ): ?> <?php else: ?>
<?php echo esc_html($cast_type_terms[0]->name);?>
<?php endif;?></p> -->


</div><!-- .cast-photo -->

注意点

キャスト画像をアップロードしない場合、予め用意した画像が表示されるようにしているので

テーマフォルダに「images」を作成して「no.jpg」は前もって作成する

キャスト詳細ページ

content-cast.php
content-cast.php

content.phpをコピーして、content-cast.php ファイルを作る

キャスト詳細で表示させる項目は、このファイルを編集する。

このような記載ならば問題なく表示されるはずです。

※一部・表記にプラグインAdvanced Custom Fields を利用しております

	<?php
	$cast_fields = get_post_custom(); //カスタムフィールドを取得
	$cast_screens = json_decode($cast_fields['_cast_screens'][0]); //画像配列
	$cast_type_terms = get_the_terms($post->ID, 'type'); //タイプ
	$cast_grade_terms = get_the_terms($post->ID, 'grade'); //グレード
	$cast_new_terms = get_the_terms($post->ID, 'krc_new'); //新人
	?>

	<?php
	if ( is_single() ) :
	the_title( '<h1 class="page-title">', '</h1>' );
	else :
	the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' );
	endif;
	?>
	<p class="taxonomy-description">
<?php echo esc_html($cast_fields['_krc_age'][0]);?>歳 T:<?php echo esc_html($cast_fields['_krc_tall'][0]);?> B:<?php echo esc_html($cast_fields['_krc_bust'][0]);?>(<?php echo esc_html($cast_fields['_krc_cups'][0]);?>) W:<?php echo esc_html($cast_fields['_krc_waist'][0]);?> H:<?php echo esc_html($cast_fields['_krc_hips'][0]);?>

<br /><?php
date_default_timezone_set('Asia/Tokyo');
$today = getdate(); 
if($today['hours'] >= 0 and $today['hours'] < 5) {//0時〜5時の表示
$today = strtotime(date("Y-m-d", strtotime("today")));
echo '';
for ($i = 0; $i <= 0; $i++) {
	$y = date('D', strtotime('+'.$i.'-1 day', $today));
if ( date('Y-m-d', strtotime('+'.$i.'-1 day', $today)) == $day ) $y = 'target';
		echo '';	
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.'-1 day', $today))) ) {
echo date('m/d ', strtotime('-1 day'));
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
	echo '-';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '';
	} 
	echo '';
	}

}  else {
date_default_timezone_set('Asia/Tokyo');
	$today = strtotime(date("Y-m-d", strtotime("today"))); //5時以降の表示
echo '';
for ($i = 0; $i <= 0; $i++) {
	$y = date('D', strtotime('+'.$i.' day', $today));
if ( date('Y-m-d', strtotime('+'.$i.' day', $today)) == $day ) $y = 'target';
		echo '';	
if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.' day', $today))) ) {
echo date("m/d ");
if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
	echo '-';
if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
echo '';
	} 
	echo '<br>';
	}
}
?>

</p>
	
 <div class="cast-single">
	 <div class="flexbox">
		 	
<div class="photo"><!-- ■flickity-->
<div class="carousel" data-flickity='{ "imagesLoaded": true, "percentPosition": false ,"wrapAround": true, "pageDots": false}'>
<?php if( empty($cast_screens) ): ?>
<!-- キャスト画像をアップロードしていない場合、テーマフォルダに「images」フォルダから・「no.jpg」を表示する get_template_directory_uri-->      
 <img src="<?php echo get_stylesheet_directory_uri();?>/images/no.jpg" class="trimming"  alt="<?php the_title();?>">
<!-- 「images」フォルダ・「no.jpg」 は前もって作成する必要がある--> 
<?php else: ?>
<?php foreach ($cast_screens as $value):?>
<img src="<?php echo $value;?>"  class="trimming" loading="lazy"  alt="<?php the_title();?>"><!-- キャスト画像 --> 
<?php endforeach;?><?php endif;?>
</div>

<?php if( empty($cast_new_terms) ): ?><?php else: ?>
<p class="cast-new"><img src="<?php echo get_stylesheet_directory_uri();?>/images/new2.png" alt="新人"></p><!-- 新人 --> 
<?php endif;?>

<?php if( empty($cast_grade_terms) ): ?><?php else: ?>
<p style="text-align:center;"><a href="<?php echo esc_url( home_url( '/' ) ); ?>grade/<?php echo esc_html($cast_grade_terms[0]->slug); ?>"><img src="<?php echo get_stylesheet_directory_uri();?>/images/<?php echo esc_html($cast_grade_terms[0]->name);?>.png" alt="<?php echo esc_html($cast_grade_terms[0]->name);?>"></a></p>

<?php endif;?>	

<!-- タイプ --><?php if( empty($cast_type_terms) ): ?><?php else: ?><p class="cast-time"><a href="../../type/<?php echo esc_html($cast_type_terms[0]->slug); ?>"><?php echo esc_html($cast_type_terms[0]->name);?></a></p><?php endif;?><!-- タイプ -->

 </div><!-- ■flickity-->

<div class="interview"><!-- ■2-->
	
<h2 class="page-schedule">INTERVIEW</h2>	
	
 <div class="qa">
<dl>
<dt><?php the_field('q1'); ?></dt>
<dd><?php the_field('a1'); ?></dd>
<dt><?php the_field('q2'); ?></dt>
<dd><?php the_field('a2'); ?></dd>
<dt><?php the_field('q3'); ?></dt>
<dd><?php the_field('a3'); ?></dd>
<dt><?php the_field('q4'); ?></dt>
<dd><?php the_field('a4'); ?></dd>
<dt><?php the_field('q5'); ?></dt>
<dd><?php the_field('a5'); ?></dd>
</dl>
</div> 

</div><!-- ■2-->

<div class="comment"><!-- ■3-->
<h2 class="page-schedule">COMMENT</h2>
<?php the_content(); ?> 
</div><!-- ■3-->
  
<div class="gcomment"><!-- ■4-->
	  
<h2 class="page-schedule">GIRLS COMMENT</h2>
<?php the_field('gcomment'); ?>	  
	  
 </div><!-- ■4-->
 
<div class="schedule"><!-- ■5-->
	 
	 <h2 class="page-schedule">SCHEDULE</h2>

<?php singlecalendar(get_the_ID());?><!-- スケジュール-->	

<!--  新人<?php echo esc_html($cast_new_terms[0]->name);?>
グレード<?php echo esc_html($cast_grade_terms[0]->name);?>
タイプ<?php echo esc_html($cast_type_terms[0]->name);?>-->

</div><!-- ■5-->

</div><!-- ■flexbox-->
</div><!-- ■cast-single-->

<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>

キャスト詳細ページ

single-cast.php
single-cast.php

single.phpをコピーして、single-cast.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

get_header(); ?>

<div id="primary" class="content-area">
	<main id="main" class="site-main">

	<?php while ( have_posts() ) : the_post(); ?>

	<?php get_template_part('content',('cast'));?>


	<?php endwhile; // End of the loop. ?>

	</main><!-- #main -->
</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

ランキングページ

archive.phpをコピーして、archive-ranking.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

get_header(); ?>

<section id="primary" class="content-area">
	<main id="main" class="site-main">
	<?php if ( have_posts() ) : ?>
		<header class="page-header">
			<?php
				the_archive_title( '<h1 class="page-title">', '</h1>' );
			//	the_archive_description( '<div class="taxonomy-description">', '</div>' );
			?>
		</header><!-- .page-header -->
		<?php /* Start the Loop */ ?>
	
	<?php while ( have_posts() ) : the_post();

		get_template_part( 'content', 'rankinglist' );
		endwhile ?>

		<?php
		the_posts_pagination( array(
			'prev_text' => esc_html__( '« Previous', 'businesspress' ),
			'next_text' => esc_html__( 'Next »', 'businesspress' ),
		) );
		?>

	<?php else : ?>

		<?php get_template_part( 'template-parts/content', 'none' ); ?>

	<?php endif; ?>

	</main><!-- #main -->
</section><!-- #primary -->

<?php if ( '3-column' !== get_theme_mod( 'businesspress_content_archive' ) ): ?>
	<?php get_sidebar(); ?>
<?php endif; ?>
<?php get_footer(); ?>

変更箇所

archive-ranking.php ファイル
get_template_part( ‘content’, get_post_format() );

get_template_part( 'content', 'rankinglist' );

に変更

ランキングページ

content-rankinglist.php
content-rankinglist.php

content.phpをコピーして、content-rankinglist.php ファイルを作る

このような記載ならば問題なく表示されるはずです。

<?php
$ranking_fields = get_post_custom();  //カスタムフィールドを取得
$ranking_cast_ids = json_decode($ranking_fields['_cast_rankings'][0]);  
$cast_grade_terms = get_the_terms($post->ID, 'grade'); //グレード
?>

<h2 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

<div class="cssgrid">
<?php   
$rank = 1;
foreach ($ranking_cast_ids as $cast_id) {$cast = get_post_custom($cast_id, '_krc_age', '_krc_tall' , '_krc_bust' , '_krc_cups', '_krc_waist', '_krc_hips', true );  echo '<div class="cast-photo"><a href="' . get_permalink($cast_id) .'" >';?>
	
<img src="<?php  $img_url = json_decode(get_post_meta($cast_id , '_cast_screens' ,true)); echo esc_url($img_url[0]); ?>" class="trimming"  alt="<?php    echo $cast ['_krc_name'][0];?> loading="lazy" " /></a>
	
<p class="cast-new"><img src="<?php echo get_stylesheet_directory_uri();?>/images/no<?= $rank ?>.png"></p>
	
<!--<div class="ran<?= $rank ?>" aria-hidden="true"><?= $rank ?>  </div>-->

<div class="cast-name"><?php    echo $cast ['_krc_name'][0];?></div>
 
<p class="cast-size"><?php	echo $cast ['_krc_age'][0];?>歳・T:<?php	echo $cast ['_krc_tall'][0];?> </p>
<p class="cast-size">B:<?php	echo $cast ['_krc_bust'][0];?>(<?php	echo $cast ['_krc_cups'][0];?>) W:<?php	echo $cast ['_krc_waist'][0];?>  H:<?php	echo $cast ['_krc_hips'][0];?></p>
	
</div>    

<?php
$rank++;
} ?>
</div>    

ランキングページ

single-ranking.php
single-ranking.php

single-ranking.php をつくる

get_header(); ?>

<div id="primary" class="content-area">
	<main id="main" class="site-main">

	<?php while ( have_posts() ) : the_post(); ?>

	<?php get_template_part('content',('rankinglist'));?>
	
	<?php endwhile; // End of the loop. ?>

	</main><!-- #main -->
</div><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

スケジュールページ

page-schedule.php
page-schedule.php
get_header(); ?>

	<?php while (have_posts()):the_post();?>
	<?php remove_filter('the_content','wpautop');?>
	<?php the_content(__('<span class="meta-nav"></span>'));?>
	<?php wp_link_pages(array('before'=>'<div class="page-links">'.__('Page:'),'after'=>'</div>'));?>
	<?php endwhile;?>

<?php get_footer();?>

スケジュールページ

固定ページを作成

WordPresss管理画面【固定ページ→新規作成】で固定ページを作成。

本文に[scheduleshtml]というショートコードのみ記述

スラッグを「schedule」で公開

※Classic Editor プラグインを利用しております。

スケジュールを有効にする

functions.php
functions.php

スケジュールを表示

/*-------------------------------------------*/
/*  スケジュール  
/*-------------------------------------------*/
function outschedule($day) { //DBから該当の日付のデータを取得 
	date_default_timezone_set('Asia/Tokyo'); 
	global $wpdb;
	$table_name = $wpdb->prefix . 'krc_schedules';
	$schedules = $wpdb->get_var(
	$wpdb->prepare("SELECT work FROM $table_name WHERE day = %s AND status = %d", $day, 0)
	);
	$works = unserialize($schedules);
	return  $works;  //配列にして返す
}

function schedulesHtml() { //ショートコードの中身
	date_default_timezone_set('Asia/Tokyo');
$day = isset($_GET["works"]) ? $_GET['works'] : date("Y-m-d");
    $works = outschedule($day);
    $len = 6; //+1     
    $week = array("日", "月", "火", "水", "木", "金", "土");
    $w = date('w', strtotime($day));
    echo '<header class="page-header">';
    echo '<h1 class="page-title">' . date('n/j', strtotime($day));
    echo '(' . $week[$w] . ')';
	echo 'の出勤スケジュール</h2><hr />';
    echo '</header>';
	echo '<div class="gnav cp_sl0"><ul id="nav">';
	for ($i = 0; $i <= $len; $i++) {
		$yy = date('w', strtotime('+'.$i.' day'));
		$y = date('D', strtotime('+'.$i.' day'));
		if ( date('Y-m-d', strtotime('+'.$i.' day')) == $day ) $y = 'target';
		echo '<li class="weekly' . mb_strtolower($yy) . '"><a class="radius" href="' . home_url( '/' )  . '/schedule/?works=' . date('Y-m-d', strtotime('+'.$i.' day')) . '">' . strtoupper(date('n/j(' . $week[$yy] . ')', strtotime('+'.$i.' day'))) . '</a></li>';
	}
echo '</ul></div>';
	
	if (!$works) {
		//予定がない場合
		echo '<br>';
	} else if ( $works !='rest' ) {
		echo '<div class="cssgrid">';
		//postid順に配列に入っているのでs_order順にした配列を作る
		$works_array = array();
		foreach($works as $id => $val){
			$works_array[$val["s_order"]] = $id;			
		}
		ksort($works_array);
		foreach ($works_array as $rder => $id) { //当日のデータ配列を回す
			$args = array(
			'post_type' => 'cast',
			'post__in' => array($id),
			);
			
			query_posts($args);
			while ( have_posts() ) : the_post();
			set_query_var( 'work', $works[$id]);  //スケジュールを出す
    get_template_part( 'content', 'castlist' ); //content-castlist.phpは用意しておいて下さい。
			endwhile;
			wp_reset_query();
			
		}
		echo '</div><!-- clearfix -->';
	} else {
		//休み
		echo '<br>';
	}
}
add_shortcode('scheduleshtml', 'schedulesHtml'); //[scheduleshtml]というショートコードを作成
/*-------------------------------------------*/
/*  キャストの個人ページでスケジュールを表示したい	 
/*-------------------------------------------*/

function singlecalendar($id) {

	$week = array("日", "月", "火", "水", "木", "金", "土");
	$today = strtotime(date("Y-m-d H:i:s", strtotime("today")));
	echo '<div class="box-schedule ">';
	for ($i = 0; $i <= 6; $i++) {
		$yy = date('w', strtotime('+'.$i.' day'));
		$y = date('D', strtotime('+'.$i.' day', $today));
		if ( date('Y-m-d', strtotime('+'.$i.' day', $today)) == $day ) $y = 'target';
		echo '<div class="box_date schedule' . mb_strtolower($yy) . '">' . strtoupper(date('n/j(' . $week[$yy] . ')', strtotime('+'.$i.' day', $today))) . '</div>';
		if ( $casttime = today_schedule($id, date('Y-m-d', strtotime('+'.$i.' day', $today))) ) {
			echo '<div class="box_time">';
			if ($casttime['starttime'] !== '0') echo esc_html($casttime['starttime']);
			echo '-';
			if ($casttime['endtime'] !== '0') echo esc_html($casttime['endtime']);
			echo '</div>';
		} else {
			echo '<div class="box_time">未定</div>';
		}
	}
	echo '</div>';
}


function today_schedule($id, $day = '') { //本日の出勤確認

$day = $day != '' ? $day : date("Y-m-d",strtotime("today"));
$day = htmlentities($day, ENT_QUOTES, 'utf-8');
	$works = outschedule($day);	
if ($works && $works !='rest' && array_key_exists($id, $works) ) 
{
	return $works[$id];
} else {
	return false;
}
}

TOPページ等に本日の出勤キャストを表示

/*-------------------------------------------*/
/*  TOPページ等に本日の出勤キャストを表示
/*-------------------------------------------*/

function todaysCastHtml ($day = '') { //本日の出勤
	date_default_timezone_set('Asia/Tokyo');
		$time9 =  - 5;//5時に次の日のスケジュールに切り替わる仕様 .$time9.  date_i18n
		$day = $day != '' ? $day : date("Y-m-d",strtotime("+".$time9." hour"));
	
	$works = outschedule($day);
	addSchedules($works);
}
function addSchedules($works) {
	$schedule = 'schedule';
			echo '<h1 class="page-title">本日の出勤</h1>';
	if (!$works) {
		//予定がない場合
		echo '<br>';
	} else if ( $works !='rest' ) {
		$works_array = array();
		foreach($works as $id => $val){
			$works_array[$val["s_order"]] = array(
			'id'=> $id,
			'time' => $val
			);
		}
		ksort($works_array);
			echo '<div class="cssgrid">';
		foreach ($works_array as $id => $work) {
			$args = array(
			'post_type' => 'cast',
			'post__in' => array($work['id']),
			'orderby' => 'post__in'
			);
			//$test =
			query_posts($args);
			//printR($test);
		
			while ( have_posts() ) : the_post();
			set_query_var( 'schedule', $work['time'] );
			get_template_part( 'content', 'castlist' ); //content-castlist.phpは用意しておいて下さい。
			endwhile;
			wp_reset_query();
		}
	} 	echo '</div><!-- cssgrid-->'; {
		//休み
		echo '';
	}
}

TOPページ等に新人キャスト表示

/*-------------------------------------------*/
/*  新人キャスト表示 
/*-------------------------------------------*/

function outNewType () {
	$args = array(
	'post_type' => 'cast',
	'posts_per_page' => -1,
	'tax_query' => array(
	'relation' => 'AND',
	array(
	'taxonomy' => 'krc_new',
	'field' => 'slug',
	'terms' => "新人",
	)
	)
	);
	query_posts($args);
	if ( have_posts() ) :
	echo '<h1 class="page-title">新人キャスト</h1><div class="cssgrid">';
	while ( have_posts() ) : the_post();
	get_template_part( 'content', 'topcastlist' ); //content-topcastlist.phpは用意しておいて下さい。
	endwhile;
	echo '</div>';
	endif;
	wp_reset_query();
}

TOPページに本日の出勤キャストを表示する

page.php
page.php
<?php todaysCastHtml();?>

TOPページに新人キャスト表示する

<?php outNewType() ?>

設置代行

キャスト・出勤プラグイン設置代行いたします。



こちらの記事も読まれてます。